为什么一个正数按位或操作0不总是在Javascript为什么正数按位或操作0并不总是积极的Javascript
例如正:
3391700000|0
-903267296
4260919000|0
-34048296
2884900000|0
-1410067296
我使用的是镀铬在Linux上
64位有关:https://stackoverflow.com/a/12837315/1620210
为什么一个正数按位或操作0不总是在Javascript为什么正数按位或操作0并不总是积极的Javascript
例如正:
3391700000|0
-903267296
4260919000|0
-34048296
2884900000|0
-1410067296
我使用的是镀铬在Linux上
64位有关:https://stackoverflow.com/a/12837315/1620210
因为JavaScript使用32位整数最多,但请记住每个数为k在这种语言中float的IND
如果你想将它们截断为一个无符号32位值:
(3391700000|0) >>> 0
在JavaScript中,位运算符的操作数转换为32位签署整数2的补格式。这就是为什么你有一些数据丢失,截断值有时是负数,因为有二进制补码表示。
你可以参考Why bitwise shift with 0 in JavaScript yields weird results in some cases前一段时间我问过的线程,有些答案指出了你的操作数非常全面超过32位整数的位运算符可能存在的问题。
只是一个快速猜测:整数溢出? – Burki
这是正确的T__T) – Kokizzu
现在我应该改变我所有的代码库 – Kokizzu