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 :(
爲什麼上次操作在第二個例子中計算錯誤的值?