两个 int 值之间按位或运算后的负值

Negative values after bitwise OR operation between two int values

我正在尝试在两个数字之间执行按位或运算:650510336 和 2147483648 (650510336 | 2147483648)

因此,我得到负值:-1496973312 而不是 ‭2797993984

我以为我的代码有问题,但如果您将此命令发送到浏览器的控制台,您可以轻松重现它。

console.log(650510336 | 2147483648)

为什么不输出 2797993984?

JavaScript 中的所有按位运算符,当用于数字时,将其操作数 as/produce 结果视为 32 位 有符号 整数......除了 >>> 运算符.

由于您需要无符号数学,因此使用无操作逻辑右移将有符号结果重新解释为无符号:

console.log((650510336 | 2147483648) >>> 0)