这是在计算机中表示有符号整数的方法之一。在这种方法中,最高有效位(MSD)具有额外的含义。
如果MSD为0,我们可以像对待任何普通的无符号整数一样评估数字。
如果MSD为1,则表示数字为负。
其他位指示数字的大小(绝对值)。
如果该数字为负,则其他位表示该数字的大小的2的补码。
因此,正数在SM,1的补码和2的补码符号中具有相同的表示形式。在这些符号中,只有负数以不同的方式表示。假定字长为4位,则一些带符号的十进制数及其等效值以2的补码表示。
签名十进制 | 2的补码 |
---|---|
+6 | 0110 |
-6 | 1010 |
+0 | 0000 |
+7 | 0111 |
-7 | 1001 |
注意,对于0有一个单一的表示法,与+0或–0无关。可能会感觉到000仅是+0,因为在这种情况下,MSB是0。但是,–0的表示法应该是2的补码000,即1111 + 1 = 0 000(忽略进位) 。
因此,在2的补码形式中,与SignedMagnitudeor 1的补码形式相比,可以表示一个额外的负数。这是因为,在2的补码表示法中,零只有一个符号,而在SM和1的补码表示法中有0的两种符号。
如果字大小为n位,则可以表示的数字范围为-(2 n-1)至+(2 n-1 -1)。接下来显示一个单词大小和可以表示的2的补码范围的表。
字数 | 2的补码范围 |
---|---|
4 | -8至+7 |
8 | -128至+127 |
16 | -32768至+32767 |
32 | -2147483648至+ 2147483647±2×10 +9(大约) |
示例1-使用计算机将数字(+5)和(-3)相加。假定使用4位2的补码表示法表示的数字。
1101 <- carry generated during addition 0101 <- (+5) + 1101 <-(-3) 0010 <- (+2) Sum
因此,在这种方法中,计算机可以直接给出+2 = 0010的正确答案。
2的补码表示法不是很容易理解,因为它与表示带符号数字的常规方式有很大不同。
有一个单一的零表示法,当计算机要测试0结果时,这非常方便。
计算机执行算术非常方便。直接进行加法运算可获得正确的结果。
因此,2的补码通常用于表示计算机内部的带符号数字。