这行代码:
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 ?
答案 0 :(得分:1)
正如你所链接的帖子中提到的,它是以两种补码形式提供的。
负11000010000001111010000000000000 xor 1加1等于
正11110111111000011000000000000000,1039687680
终于-1039687680获得了。