按位或意外结果

时间:2016-04-25 02:02:01

标签: javascript bit-manipulation bitwise-operators

这行代码:

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

1 个答案:

答案 0 :(得分:1)

正如你所链接的帖子中提到的,它是以两种补码形式提供的。

负11000010000001111010000000000000 xor 1加1等于

正11110111111000011000000000000000,1039687680

终于-1039687680获得了。