【问题标题】:bitwise OR unexpected result按位或意外结果
【发布时间】:2016-04-25 02:02:01
【问题描述】:

这行代码:

console.log((90000000000000|0).toString());

输出:

-1039687680  ( bin -111101111110000110000000000000 )

根据32-bit signed integer conversion,我预计:

/--discarded--\/---------significant----------\
10100011101101011000010000001111010000000000000    = 90000000000000
                              │
               11000010000001111010000000000000 OR
               00000000000000000000000000000000
               ================================
               11000010000001111010000000000000    = -1107795968
           sign/\------significant bits-------/

为什么我得到的是 -1039687680 而不是 -1107795968

【问题讨论】:

    标签: javascript bit-manipulation bitwise-operators


    【解决方案1】:

    正如您链接的帖子中所述,它是二进制补码格式。

    负11000010000001111010000000000000 xor 1加1等于

    阳性 11110111111000011000000000000000, 1039687680

    最终获得-1039687680。

    【讨论】:

      猜你喜欢
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多