二进制补码表示法
这是在计算机中表示有符号整数的方法之一。在这种方法中,最高有效位(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结果时非常方便。
对于计算机执行算术运算非常方便。加法运算可以直接给出正确的结果。
因此,补码表示法通常用于在计算机内部表示有符号数。
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP