反码:正数的反码为原码,负数的反码是原码符号位外按位取反
补码:
正数的补码为原码,负数的反码是反码+1
在计算机中用补码表示数据的原因:如果二进制第一位是0的话, 代表正数, 1的话代表负数. 比如 -1的表示方法是(以8位数字为例.) 10000001 这就是-1的表示方法, 第一个1就是符号位. 这种表示方法有一个致命的缺点, 有两种方法可以表示0(00000000, 10000000)。补码技术可以完美解决上述问题。0的表示方法都是(00000000).
真值与三种机器数间的对照表
真值X |
[X]原、[X]反、[X]补 |
真值X |
[X]原 |
[X]反 |
[X]补 | |||
十进制 |
二进制 |
十进制 |
二进制 | |||||
+0 |
+000 |
0000 |
-0 |
-0000 |
1000 |
1111 |
0000 | |
+1 |
+001 |
0001 |
-1 |
-0001 |
1001 |
1110 |
1111 | |
+2 |
+010 |
0010 |
-2 |
-0010 |
1010 |
1101 |
1110 | |
+3 |
+011 |
0011 |
-3 |
-0011 |
1011 |
1100 |
1101 | |
+4 |
+100 |
0100 |
-4 |
-0100 |
1100 |
1011 |
1100 | |
+5 |
+101 |
0101 |
-5 |
-0101 |
1101 |
1010 |
1011 | |
+6 |
+110 |
0110 |
-6 |
-0110 |
1110 |
1001 |
1010 | |
+7 |
+111 |
0111 |
-7 |
-0111 |
1111 |
1000 |
1001 | |
+8 |
- |
- |
-8 |
-1000 |
- |
- |
1000 |