在计算机内,有符号数有3种表示法:原码、反码和补码,所有数据的运算都是采用补码进行的。
原码:二进制定点表示法,即最高位为符号位,‘0’表示正,‘1’表示负,其余位表示数值的大小。
反码:正数的反码与其原码相同,负数的反码是对其原码逐位取反,但符号位除外。
补码:正数的补码与其原码相同,负数的补码是在其反码的末尾加1。
例如:
分别用原码、反码和补码表示+7和-7
先计算得到7的二进制数为111
原码:
|
符号位 |
数值位 |
+7 |
0 |
0000111 |
-7 |
1 |
0000111 |
反码:
|
符号位 |
数值位 |
+7 |
0 |
0000111 |
-7 |
1 |
1111000 |
补码:
补码:
|
符号位 |
数值位 |
+7 |
0 |
0000111 |
-7 |
1 |
1111001 |
注:负数的补码在加1后可能导致符号位变化
如: 0 1111111在末尾加1 得到 1 0000000
练习:
- 已知某数的原码为10110100B,试求该数的反码和补码。
|
符号位 |
数值位 |
原码 |
1 |
0110100 |
反码 |
1 |
1001011 |
补码 |
1 |
1001100 |
- 已知某数的补码为11101110B,试求其原码。
|
符号位 |
数值位 |
补码 |
1 |
1101110 |
反码 |
1 |
1101101 |
原码 |
1 |
0010010 |