负数无符号右移
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正解。