2的补码表示法

这是在计算机中表示有符号整数的方法之一。在这种方法中,最高有效位(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的补码通常用于表示计算机内部的带符号数字。