为什么在 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位整数的位运算符可能存在的问题。