为什么Javascript将数字视为2';补语

为什么Javascript将数字视为2';补语,javascript,binary,Javascript,Binary,下面解释一下为什么~5等于-6: 5=0000 0101 翻转(~5)=1111010 那么,哪个 1111010代表什么数字?因为第一个数字是1,我们知道 这是一个负值。要找到哪个值,请执行以下操作: -(翻转(1111010)+1)= -(0000 0101 + 1) -(0000 0110) = -六, 我想知道为什么Javascript将~5的结果视为二者的补码形式的数字 我的困惑源于这样一个事实:如果我在控制台中编写0b11111010,它的计算结果是250,而不是-6,因为Javas

下面解释一下为什么
~5
等于
-6

5=0000 0101

翻转(~5)=1111010

那么,哪个 1111010代表什么数字?因为第一个数字是1,我们知道 这是一个负值。要找到哪个值,请执行以下操作:

-(翻转(1111010)+1)= -(0000 0101 + 1) -(0000 0110) = -六,

我想知道为什么Javascript将
~5
的结果视为二者的补码形式的数字


我的困惑源于这样一个事实:如果我在控制台中编写
0b11111010
,它的计算结果是250,而不是-6,因为Javascript就是这样用二进制表示负数的:

所有按位运算符的操作数都转换为2的补码格式的有符号32位整数。2的补码格式意味着一个数字的负对应(例如5对-5)是所有数字的位的倒数(按位不是数字的,也称为1的数字补码)加上1


你的问题归结为“为什么整数是用Javascript签名的?”。我的困惑源于这样一个事实:如果我在控制台中编写
0b11111010
,它的计算结果是250,而不是-6,这是因为整数不是8位的。你能详细说明一下吗?
5
是一个整数,正如Oliver所指出的,不是8位的<另一方面,code>0b11111010是一个8位二进制文件。