两个补充如何工作?例如:
5: 00000101
-5 (two's complement): 11111011
如何判断后者应该是251还是-5?
答案 0 :(得分:4)
他们都是,没有。 11111011
只是一种模式 - 如果在某些操作中使用,例如算术,它只会获得一些固有的意义。
根据您使用的操作,解释可能有所不同 - 使用2的补码的原因是,例如在整数运算中,无论您将其解释为有符号还是无符号,操作的位模式结果都是正确的。
答案 1 :(得分:1)
你不能!这就是许多语言都有签名和无符号类型的原因。编译器/解释器知道是将二进制值解释为signed(二进制补码)还是无符号。
答案 2 :(得分:1)
为了更好地理解两个补码,请查看Wikipedia page
比特串的解释取决于将要使用该数据的指令。如果将变量声明为无符号,则将位解释为常规二进制数。否则,如果将其声明为有符号变量,则将其解释为二进制补码值。
答案 3 :(得分:1)
如果它的有符号整数,它的最高位,则作为其符号位。如果符号位为0,则该数字为正。如果符号位为1,则该数字为负数,并以2的补码形式表示,编译器执行2的补码操作以处理这些负整数。
但是在无符号整数明确声明为“unsigned int”的情况下,没有符号位,也没有2的补码解释。
因此对于带符号的8 bin int 11111011是5的2的补码,因此表示-5,但对于无符号8位int 11111011是251,如您所述。