JavaScript代码:
alert( -123456 >>> 0 ); // Prints 4294843840
Java 代码:
System.out.println( -123456 >>> 0 ); // Prints -123456
为什么?我已经阅读了文档,但我没有找到区别。如何将JavaScript代码移植到Java?
JavaScript代码:
alert( -123456 >>> 0 ); // Prints 4294843840
Java 代码:
System.out.println( -123456 >>> 0 ); // Prints -123456
为什么?我已经阅读了文档,但我没有找到区别。如何将JavaScript代码移植到Java?
两者都是逻辑右移,但 JavaScript 在处理数字时存在一些奇怪的问题。通常情况下,JavaScript 中的数字是浮点数,但位运算会将它们转换为无符号 32 位整数。因此,即使该值看起来不应该改变,它也会将该数字转换为 32 位无符号整数。
你看到的值 4294843840
只是与 -123456
相同的比特,但解释为无符号而不是有符号。
>>
。 - Bergi