当前位置: 代码迷 >> J2SE >> system.out.println(-8>>>2),输出1073741822。求解释。多谢
  详细解决方案

system.out.println(-8>>>2),输出1073741822。求解释。多谢

热度:2208   发布时间:2013-02-25 00:00:00.0
system.out.println(-8>>>2),输出1073741822。求解释。谢谢。
system.out.println(-8>>>2),输出1073741822。求解释。谢谢。

------解决方案--------------------------------------------------------
在JAVA中 int是一个含符号的变量
0x0~0x7FFFFFFF为正数,0x80000000~0xFFFFFFFF为负数。
其中0xFFFFFFFF表示的是-1,-8是用0xFFFFFFF8表示的。
把这个数无符号右移2位,就是0x3FFFFFFE;
把这个数有符号右移2位,就是0xFFFFFFFE;
(用计算器把它转换一下吧?)
------解决方案--------------------------------------------------------
-8: 1111 1111 1111 1111 1111 1111 1111 1000 或者0xfffffff8
无符号右移两位: 0011 1111 1111 1111 1111 1111 1111 1110 或者0x3ffffffe
  相关解决方案