二进制补码表示法


这是在计算机中表示有符号整数的方法之一。在这种方法中,最高有效位(MSD)具有额外的含义。

  • 如果MSD为0,我们可以像对待任何普通的无符号整数一样评估该数。
  • 如果MSD为1,则表示该数为负数。

其他位表示该数的幅度(绝对值)。

如果数字为负数,则其他位表示该数字幅度的二进制补码。

因此,正数在符号位、反码和补码表示法中具有相同的表示。只有负数在这些表示法中的表示不同。下表显示了一些有符号十进制数及其在补码表示法中的等效值,假设字长为4位。

有符号十进制
补码
         +6
   0110
         -6
   1010
         +0
   0000
         +7
   0111
         -7
   1001

请注意,0只有一个表示法,无论它是+0还是-0。有人可能会认为0 000 只有+0,因为在这种情况下MSB为0。但是,-0的表示法应该是0 000的补码,即1111 + 1 = 0 000(忽略进位)。

因此,在补码表示法中,可以表示比符号位或反码表示法多一个负数。这是因为在补码表示法中,零只有一个表示法,而在符号位和反码表示法中,零有两个表示法。

范围

如果字长为n位,则可以表示的数字范围是从-(2n-1)到+(2n-1 -1)。下表显示了字长和可以表示的补码数的范围。

字长
补码数字范围
       4
-8 到 +7
       8
-128 到 +127
       16
-32768 到 +32767
       32
-2147483648 到 +2147483647 ≈ ±2 × 10+9

 

示例1 - 使用计算机将数字(+5)和(-3)相加。假设这些数字使用4位补码表示。

             1101 <- carry generated during addition

             0101 <- (+5)

           + 1101 <-(-3)

             0010 <- (+2) Sum


因此,在这种方法中,计算机可以直接给出+2 = 0010的正确答案。

缺点

  • 补码表示法不容易理解,因为它与表示有符号数的常规方法大相径庭。

优点

  • 零只有一个表示法,当计算机需要测试0结果时非常方便。

  • 对于计算机执行算术运算非常方便。加法运算可以直接给出正确的结果。

因此,补码表示法通常用于在计算机内部表示有符号数。

更新于:2020年6月27日

4K+ 次浏览

开启您的职业生涯

通过完成课程获得认证

开始学习
广告