按位或意外结果

bitwise OR unexpected result

本文关键字:结果 意外 位或      更新时间:2023-09-26

这行代码:

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

输出:

-1039687680  ( bin -111101111110000110000000000000 )

根据 32 位有符号整数转换,我期望:

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

为什么我获得 -1039687680 而不是 -1107795968

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

负11000010000001111010000000000000 异或 1 加 1 等于

阳性11110111111000011000000000000000,1039687680

终于-1039687680收获了。