【问题标题】:Negative values after bitwise OR operation between two int values两个 int 值之间的按位或运算后的负值
【发布时间】:2019-12-09 19:45:03
【问题描述】:

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

结果,我得到了负值:-1496973312 而不是 ‭2797993984

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

console.log(650510336 | 2147483648)

为什么不输出 2797993984?

【问题讨论】:

    标签: javascript bitwise-operators


    【解决方案1】:

    JavaScript 中的所有位运算符,当用于数字时,将其操作数视为/产生 32 位 有符号 整数的结果……除了 >>> 运算符。

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

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

    【讨论】:

    • 谢谢 :) 工作正常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    相关资源
    最近更新 更多