日期:2014-05-20  浏览次数:20847 次

负数无符号右移
class weiyi 
{
  public static void main(String[] args)
  {
int a=-17,a1,a2;
a1=a>>>4;
System.out.println(a);
System.out.println(a1);
  }
}

JAVA的所有数的有符号左移和右移都能得出预计的结果,而负数的五符号右移为什么的不出预计的结果呢?比如上面代码,a=-17,则在计算机中的表示应该为11101111,无符号右移四位 ,应该是00001110,编译出结果应该是12,可编译出来却是 268435454,这是什么原因?我用的是JAVA1.6.0_05。


http://topic.csdn.net/t/20060304/17/4592722.html,这里有个解释 ,我没有看明白。

------解决方案--------------------
-17(10)= 11111111 11111111 11111111 11101111
-17〉〉〉4 = 00001111 11111111 11111111 11111110 = 268435454

------解决方案--------------------
2L正解。