# 1 楼答案 双箭头“>;>;”和三个箭头“>;>;”是在32位整数上定义的,所以对变量执行这些操作将把它们从非数字“转换”为数字。此外,javascript数字存储为双精度浮点,因此这些操作还将导致丢失任何高于32的精度位。“>;>;”保留符号位(结果是有符号整数),而“>;>;”不会(结果是无符号整数) http://msdn.microsoft.com/en-us/library/342xfs5s%28v=vs.94%29.aspx 为了更好的解释:https://stackoverflow.com/a/1822769/780399
# 2 楼答案 其他人提供了解释>>>;移位所有位,甚至是符号位(MSB)>>;保持标志位在适当位置,并移动所有其他标志位。以下是一些示例代码: int x=-64; System.out.println("x >>> 3 = " + (x >>> 3)); System.out.println("x >> 3 = " + (x >> 3)); System.out.println(Integer.toBinaryString(x >>> 3)); System.out.println(Integer.toBinaryString(x >> 3)); 输出如下: x >>> 3 = 536870904 x >> 3 = -8 11111111111111111111111111000 11111111111111111111111111111000
# 1 楼答案
双箭头“>;>;”和三个箭头“>;>;”是在32位整数上定义的,所以对变量执行这些操作将把它们从非数字“转换”为数字。此外,javascript数字存储为双精度浮点,因此这些操作还将导致丢失任何高于32的精度位。“>;>;”保留符号位(结果是有符号整数),而“>;>;”不会(结果是无符号整数)
http://msdn.microsoft.com/en-us/library/342xfs5s%28v=vs.94%29.aspx
为了更好的解释:https://stackoverflow.com/a/1822769/780399
# 2 楼答案
其他人提供了解释>>>;移位所有位,甚至是符号位(MSB)>>;保持标志位在适当位置,并移动所有其他标志位。以下是一些示例代码:
输出如下: