原码反码补码的计算
原码:数字的二进制表示即为源码
反码:反码就是在源码的基础上,符号位不变,其它位取反
补码:正数的补码就是他的原码,负数的补码就是反码+1
10的源码:0000 0000 0000 0000 0000 0000 0000 1010
-10的源码:1000 0000 0000 0000 0000 0000 0000 1010
-10的反码:1111 1111 1111 1111 1111 1111 1111 0101
-10的补码:1111 1111 1111 1111 1111 1111 1111 0110
为什么要使用补码?
- 可以解决0存储问题
如果把0看成正数,则0的原码为0000 0000 0000 0000 0000 0000 0000 0000,如果把0看成是负数,则源码为1000 0000 0000 0000 0000 0000 0000 0000,但是不管把0看成正数还是负数他的补码都是0000 0000 0000 0000 0000 0000 0000 0000。 - 可以简化计算
我用8位整数来举例,第一位代表符号位
-3+5
-3的补码是1111 1101,5的补码是0000 0101,补码相加为0000 0010,为2的补码,结果为2
3+5
3的补码是0000 0011,5的补码是0000 0101,补码相加为0000 1000,为8的补码,结果为8
用补码计算无需区分正负,只需要把值相加就行