Binary 两个';补语解释

Binary 两个';补语解释,binary,twos-complement,Binary,Twos Complement,二的补语是怎么起作用的?例如: 5: 00000101 -5 (two's complement): 11111011 你怎么知道后者应该是251还是-5呢?你不能!这就是许多语言具有有符号和无符号类型的原因。因此编译器/解释器知道是将二进制值解释为有符号(二的补码)还是无符号。你不能!这就是许多语言具有有符号和无符号类型的原因。因此,编译器/解释器知道是将二进制值解释为有符号(2的补码)还是无符号。它们都是,而且都不是11111 011只是一种位模式——如果在某些操作(如算术)中使用,它只能

二的补语是怎么起作用的?例如:

5: 00000101
-5 (two's complement): 11111011

你怎么知道后者应该是251还是-5呢?

你不能!这就是许多语言具有有符号和无符号类型的原因。因此编译器/解释器知道是将二进制值解释为有符号(二的补码)还是无符号。

你不能!这就是许多语言具有有符号和无符号类型的原因。因此,编译器/解释器知道是将二进制值解释为有符号(2的补码)还是无符号。

它们都是,而且都不是
11111 011
只是一种位模式——如果在某些操作(如算术)中使用,它只能获得一些固有的意义


根据您使用的运算,解释可能会有所不同-使用2的补码的原因是,例如,在整数算术中,运算的位模式结果将是正确的,无论您将其解释为有符号还是无符号。

它们都是且无
11111 011
只是一种位模式——如果在某些操作(如算术)中使用,它只能获得一些固有的意义


根据您使用的运算,解释可能会有所不同-使用2的补码的原因是,例如,在整数算术中,运算的位模式结果将是正确的,无论您将其解释为有符号还是无符号。

要更好地理解2的补码,请查看


位串的解释取决于将使用该数据的指令。如果将变量声明为无符号,则位将被解释为常规二进制数。否则,如果将其声明为有符号变量,则会将其解释为2的补码值。

要更好地理解2的补码,请查看


位串的解释取决于将使用该数据的指令。如果将变量声明为无符号,则位将被解释为常规二进制数。否则,如果将其声明为有符号变量,则会将其解释为2的补码值。

如果它是有符号整数,则它的最高有效位用作其符号位。如果符号位为0,则数字为正。如果符号位为1,则数字为负数,以2的补码形式表示,编译器执行2的补码运算来处理这些负整数

但对于显式声明为“unsigned int”的无符号整数,没有符号位和2的补码解释


因此,对于有符号8位,int 11111 011是2对5的补码,因此表示-5,但对于无符号8位,int 11111 011是251,如您所述。

如果它是有符号整数,则它的最高有效位用作其符号位。如果符号位为0,则数字为正。如果符号位为1,则数字为负数,以2的补码形式表示,编译器执行2的补码运算来处理这些负整数

但对于显式声明为“unsigned int”的无符号整数,没有符号位和2的补码解释

所以对于有符号8位,int 11111 011是2对5的补码,因此表示-5,但是对于无符号8位,int 11111 011是251,正如您所提到的