原码,反码和补码用于将二进制有符号数据的正负号也用二进制编码的方式来表示, 它们所代表的实际数值称为"真值".
原码就是直接在真值的绝对值之前增加一个符号位, 并取正数的符号为0,负数的符号为1
正数的反码,补码与原码相同.
负数的反码为原码的符号位不变,其它位取反而得,负数的补码为原码的符号位不变,其它位取反加1而得.
以下是负数三种编码之间的转换关系:
举例:
十进制真值 | 十六进制真值 | 二进制真值 | 原码 | 反码 | 补码 |
+97 | +61H | +110 0001 | 0110 0001 | 0110 0001 | 0110 0001 |
-97 | -61H | -110 0001 | 1110 0001 | 1001 1110 | 1001 1111 |