1 回答

明明如月
TA贡献4条经验 获得超1个赞
其实这个问题的关键是[二进制]和[操作符 >>> ] 的含义。
十进制如何转二进制可以自己百度学习。
Java中打印二进制可以使用
int i = -2; System.out.println(Integer.toBinaryString(i));
而Java中整数4个字节,一个字节8位,即32位。
二进制中最高位是符号位, 1 代表负数,0 代表正数。
每一位右移会导致左侧位数不够,因此需要填充数据。
>> 表示带符号右移,即负数带符号右移前面补1,正数则前面补0。
>>> 表示无符号右移,即不管正负数左侧均补零。
-2的二进制表示为: 11111111111111111111111111111110
-2 无符号 右移3位为 00011111111111111111111111111111(右侧 110 丢了,左侧补三个0)
public static void main(String[] args) { int i = -2; System.out.println("-2的二进制形式:"+Integer.toBinaryString(i)); int result = i >>> 3; System.out.println("-2>>>3 的二进制值:"+Integer.toBinaryString(result)); System.out.println("-2>>>3的十进制表示:"+result); }
运行结果为:
-2的二进制形式:11111111111111111111111111111110
-2>>>3 的二进制值:11111111111111111111111111111
-2>>>3的十进制表示:536870911
最后希望该同学可以动手编码看结果,其次自己了解二进制,了解常见的二进制运算。
添加回答
举报
0/150
提交
取消