为什么在Javascript中使用按位操作的正数或0不总是正数

时间:2015-07-10 09:52:25

标签: javascript bitwise-operators

为什么正数在Javascript

中按位运算或0运算并不总是正数

例如:

3391700000|0
-903267296

4260919000|0
-34048296

2884900000|0
-1410067296

我在Linux上使用chrome 64位

与:https://stackoverflow.com/a/12837315/1620210

相关

2 个答案:

答案 0 :(得分:2)

因为JavaScript最多使用32位整数,但要记住每个数字都是这种语言的浮点数

如果要将它们截断为无符号的32位值:

(3391700000|0) >>> 0

答案 1 :(得分:1)

在JavaScript中,按位运算符的操作数将转换为带有2位补码格式的带符号32位整数。这就是为什么你有一些数据丢失和截断的值有时是负面的,因为签名的二进制补码表示。

你可以参考我前段时间提到过的Why bitwise shift with 0 in JavaScript yields weird results in some cases线程,并且一些答案指出了你的操作数非常全面地超过32位整数的按位运算符的可能问题。