1
我尝试在JAVA中使用正确的二进制移位。请看下面的代码:JAVA右移位返回wrond值
int val = 180000;
val >>>= 8; // val == 703, ok
val >>>= 8; // val == 2 , lok
val >>>= 8; // val == 0 , ok
...
它的工作是确定的。但是,当我尝试使用此代码(从C项目ctr + c ctr + v)我无法计算正确的值,当移位len是最大的32位。
int val;
val = 180000;
val >>>= 8; //val = 703, ok
val = 180000;
val >>>= 16; //val = 2, ok
val = 180000;
val >>>= 32; //val = 180000, wrong :(
为什么上次操作在第二个例子中计算错误的值?