Java和JavaScript中的运算符>>>有什么区别?
2022-09-01 12:04:27
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