为什么0x80000000& 0x80000000低然后0

时间:2018-06-08 04:58:16

标签: javascript node.js hex 64-bit

为什么在nodejs

__COUNTER__

0x80000000 & 0x80000000 < 0

如果我使用更多大的十六进制,如0x40000000 & 0x40000000 > 0

它会有任何隐藏的错误吗?

POSTAG.ts

console.log(0x80000000)// =&gt; 2147483648

2 个答案:

答案 0 :(得分:1)

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

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

> 0x80000000
-2147483648
> 0x40000000
1073741824

它与&运算符无关,特别是因为ANDing两个相同的东西再次给出了这个东西。

答案 1 :(得分:0)

第一种情况下最左边的数字是8,第二种情况下最左边的数字是4. 0-7的任何一个是正数,8-f是负数。因为十六进制中的8是1000而十六进制中的4是0100。