二进制补码表示法
这是在计算机中表示有符号整数的方法之一。在这种方法中,最高有效位(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结果时非常方便。
对于计算机执行算术运算非常方便。加法运算可以直接给出正确的结果。
因此,补码表示法通常用于在计算机内部表示有符号数。
广告