反码:正数的反码为原码,负数的反码是原码符号位外按位取反
补码: 正数的补码为原码,负数的反码是反码+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 |