两个 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)
我正在尝试在两个数字之间执行按位或运算:650510336 和 2147483648 (650510336 | 2147483648
)
因此,我得到负值:-1496973312
而不是 2797993984
。
我以为我的代码有问题,但如果您将此命令发送到浏览器的控制台,您可以轻松重现它。
console.log(650510336 | 2147483648)
为什么不输出 2797993984?
JavaScript 中的所有按位运算符,当用于数字时,将其操作数 as/produce 结果视为 32 位 有符号 整数......除了 >>>
运算符.
由于您需要无符号数学,因此使用无操作逻辑右移将有符号结果重新解释为无符号:
console.log((650510336 | 2147483648) >>> 0)