为什么在nodejs中

0x80000000 & 0x80000000 < 0




0x40000000 & 0x40000000 > 0




如果我使用更大的十六进制像0x800000000

它会有隐藏的错误吗?

POSTAG.ts



console.log(0x80000000)// => 2147483648

最佳答案

这是因为数字在计算机(two's complement)中的显示方式。

十六进制数字8是二进制1000,因此寄存器中数字的二进制表示形式具有最左边的位1(负数)。十六进制数字40100,因此它以0开头(正)。

> 0x80000000
-2147483648
> 0x40000000
1073741824


它与&运算符无关,尤其是因为将两个相同的事物进行“与”运算会再次得到该事物。

09-30 21:02