有符号数据表示法:
在计算机内,有符号数有三种表示法:原码,反码,补码。
所有数据的运算都是采用补码进行的。
原码
二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
例如:
我们用-7和+7举例说明
首先计算出+7的二进制:00000111
| 符号位 | 数值位 |
---|
+7 | 0 | 0000111 |
-7 | 1 | 0000111 |
反码
正数的反码与其原码相同
负数的反码是对其原码逐位取反(0—>1 , 1—>0),但符号位除外。
例如:
我们依然利用-7和+7举例说明
+7 | 符号位 | 数值位 |
---|
原码 | 0 | 0000111 |
反码 | 0 | 0000111 |
-7 | 符号位 | 数值位 |
---|
原码 | 1 | 0000111 |
反码 | 1 | 1111000 |
反码
| 符号位 | 数值位 |
---|
+7 | 0 | 0000111 |
-7 | 1 | 1111000 |
补码
正数的补码与其原码相同
负数的补码是在其反码的末尾加一(注意:是在末尾数值上加1,并不是改变位数)
例如:
同样利用-7和+7举例说明
+7 | 符号位 | 数值位 |
---|
原码 | 0 | 0000111 |
反码 | 0 | 0000111 |
补码 | 0 | 0000111 |
-7 | 符号位 | 数值位 |
---|
原码 | 1 | 0000111 |
反码 | 1 | 1111000 |
补码 | 1 | 1111001 |
典例
已知某数X的原码位10110100B,试求X的补码和反码。
X | 符号位 | 数值位 |
---|
原码 | 1 | 0110100 |
反码 | 1 | 1001011 |
补码 | 1 | 1001100 |
注意:
在进行补码操作的时候,会出现末尾加一时,会出现2,此时应该逢2进1。
总结
正数的原码,反码,补码都相同。