为什么在 Javascript 中按位或 0 运算的正数并不总是正数
Why a positive number operated with bitwise or 0 not always positive in Javascript
为什么在 Javascript
中按位或 0 运算的正数并不总是正数
例如:
3391700000|0
-903267296
4260919000|0
-34048296
2884900000|0
-1410067296
我在 Linux
上使用 chrome 64 位
相关:
因为JavaScript最多使用 32 位整数,但请记住每个数字在这种语言中都是一种浮点数
如果您想将它们截断为无符号的 32 位值:
(3391700000|0) >>> 0
在JavaScript中,按位运算符的操作数被转换为2的补码格式的有符号32位整数。这就是为什么您会丢失一些数据,并且由于有符号二进制补码表示,截断值有时为负。
你可以参考一下前段时间我自己问的帖子,一些回答很全面的指出了你的操作数超过32位整数的位运算符可能存在的问题。
为什么在 Javascript
中按位或 0 运算的正数并不总是正数例如:
3391700000|0
-903267296
4260919000|0
-34048296
2884900000|0
-1410067296
我在 Linux
上使用 chrome 64 位相关:
因为JavaScript最多使用 32 位整数,但请记住每个数字在这种语言中都是一种浮点数
如果您想将它们截断为无符号的 32 位值:
(3391700000|0) >>> 0
在JavaScript中,按位运算符的操作数被转换为2的补码格式的有符号32位整数。这就是为什么您会丢失一些数据,并且由于有符号二进制补码表示,截断值有时为负。
你可以参考一下