java中位运算问题

如果int类型的变量a的十进制表示为79,则a>>2之后的结果是多少?
麻烦再写下过程

计算思路:
1,当做位运算时要先知道是坐位移还是有位移,左位移符号为<<而右位移符号为>>
2,需要将对应的数字转换为二进制,即可以将其拆分成为2^n,2^n算的值是离对应要转换的值余数最小的数,如需要转换的是79那么最小余数为64=2^6以此类推可以得出79=64+8+4+2+1=2^6+2^3+2^2+2^1+2^0=0100 1111(次数+1是对应的位置即为即从右到左第一位为1,第二三四和七位位移,如果为8位表示那么其它位为0);
3,将得到的值位移,位移方向如果是左位移那么向左移动对应的位数(位数为符号右边的那个数),右位移同理。
4,将位移后的二进制转换为十进制。转换方法是十进制转二进制的逆向运算。

过程:
首先将79分解为二进制为:0100 1111(79=64+8+4+2+1也就对应的0100 1111=0100 0000 +1000+0100+0010+0001),当已知了79的二进制后将对应的二进制向右移动2位,当移动一位时对应的高位补0(负数补1),低位移除。0010 0111,以此再移动以为后为0001 0011(1+2+0+0+16+0+0+0=19)。所以结果为19.
(注:本人能力不高,如果有不对的地方还望见谅)
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-06-20
79是01001111,右移2位,高位补零,是00010011,结果是19吗追问

怎么还是问句结尾………… 是这样算么 我也不知道啊= =

追答

呵呵~右移运算是这么算,右移后高位补零~例子网上可以搜“java右移位运算”

追问

有的高位补1 是什么个情况

追答

高位是符号位,你的a这里是79,是正数,所以高位补0,负数就高位补1

本回答被提问者和网友采纳

JAVA位运算怎么用的???
Java 位运算 Java 位运算[转]一,Java 位运算1.表示方法: 在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1。补码的表示需要满足如下要求。 (l)正数的最高位为0,其余各位代表数值本身(二进制数)。 (2)对于负数,通过对该数绝对值的补码按位取反,再对...

Java中位运算,如图
1、正数的补码 = 原码 2、负数的补码 = 原码的反码 + 1 3、负数的原码 = 补码的反码 + 1 4、 负数的求反,符号位不变 第一个问题:-126在计算机中以补码形式存在,所以右移后的1100 0001依旧是补码 第二个问题:参照上面的第3条规定 ...

java中位运算 12>>33 ,应该怎么计算?过程是什么?
1)它的通用格式如下所示:value >> num num 指定要移位值value 移动的位数。右移的规则只记住一点:符号位不变,左边补上符号位 2)运算规则:按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1 当右移的运算数是byte 和short类型时,将自动...

java中位运算符,(byte) 0x80 的那个,为何答案是-32
byte 共有 8 位,表示范围是 -128 ~ 127,二进制即 10000000 ~ 01111111,第一位为符号位,1 表示负数,0 表示整数,11111111 即表示 -127,10000000 比较特殊,表示 -128。所以,0x80 本来是整数的 128,二进制 00000000000000000000000010000000 (Java 中整数4个字节32位)。(byte)0x80,将其转换...

Java中,位运算符>>,右移时左边何时补0,何
举个例子:2左移动3位 2(十进制)=00000010(二进制)二进制00000010向左移动三位变成了00010,超出了8位,相当于删除前三个字符位,删除之后又由于不满足8位,后面填0,变成00010000 00010000(二进制) = 16(十进制)

位运算与原地交换两个数
在Java中,位运算符包括按位取反(~)、按位与(&)、按位或(|)、按位异或(^)、左移位运算符(<<)和右移位运算符(>>)。这些运算符分别执行不同的位操作逻辑,如按位取反翻转每一个位,按位与在对应位上为1时产生1,按位或在对应位上只要有一个1就产生1,按位异或只有对应位有一个1时产生...

Java中,位运算符>>,右移时左边何时补0,何
举个例子:2左移动3位2(十进制)=00000010(二进制)二进制00000010向左移动三位变成了00010,超出了8位,相当于删除前三个字符位,删除之后又由于不满足8位,后面填0,变成0001000000010000(二进制)=16(十进制)

Java中,位运算符>>,右移时左边何时补0,何时补1
此时只会用到右侧的6个低位,防止移动超过long值里现成的位数。但在进行“无符号”右移位时,也可能遇到一个问题。若对byte或short值进行右移位运算,得到的可能不是正确的结果(Java 1.0和Java 1.1特别突出)。它们会自动转换成int类型,并进行右移位。但“零扩展”不会发生,所以在那些情况...

在java中, 一个数左移n位,就是将这个数乘以2的n次方,右移就是将这个数...
=== 这么理解 一个10进制数左移n位,就是将这个数乘以10的n次方,右移就是将这个数除以10的n次方 比如1,左移2位,得100(十进制),一个 2进制数左移n位,就是将这个数乘以 2的n次方,右移就是将这个数除以 2的n次方 比如1,左移2位,得100(二进制),换十进制等于4 位运算是以2进制...

JAVA 位运算 (byte) (a << 2); 是什么意思?
右移位:>>,有符号的移位操作 右移操作是将运算数的二进制码整体右移指定位数,右移之后的空位用符号位补充,如果是正数用0补充,负数用1补充。例子:public static void main(String[] args){ System.out.println(3<<2);\/\/3左移2位 System.out.println(-3<<2);\/\/-3左移2位 System.out....

相似回答