示例
十进制数 | 原码 | 反码 | 补码 |
---|---|---|---|
0 | 0000 | 0000 | 0000 |
1 | 0001 | 0001 | 0001 |
2 | 0010 | 0010 | 0010 |
3 | 0011 | 0011 | 0011 |
4 | 0100 | 0100 | 0100 |
5 | 0101 | 0101 | 0101 |
-1 | 1001 | 1111 | 0001 |
-2 | 1010 | 1101 | 1110 |
-3 | 1011 | 1100 | 1101 |
-4 | 1100 | 1011 | 1100 |
-5 | 1101 | 1010 | 1011 |
反码: 反码只是为了求补码而产生的中间值
- 对于正数: 反码等于原码
- 对于负数: 反码等于除了符号位全部取反
补码:为了使计算机中定义的负数(开头为1即为负数)可以正常运算
- 对于正数: 补码等于原码
- 对于负数: 补码等于原码的反码 + 1
- 补码的特殊能力: 对一个原码求两次补码,会得到它本身。
补码计算实例
-1 + -1
求和 | 第一个数 | 第二个数 |
---|---|---|
十进制 | -1 | -1 |
原码 | 1001 | 1001 |
补码 | 1111 | 1111 |
补码相加 得到: 1110
对这个值再求一次补码即可返回到原码的值:
1110 -> 1001 -> 1010
得到 -2