1.原码:
原码由二进制数得原数值部分和符号位组成。
+1010101的原码位01010101,-1010101的原码为11010101.其中第一位为+,-符号位。
2.反码:
正数:反码和原码相同,为符号位加上原数值。
+10010101的反码为010010101
负数:反码为符号位加上原数值按位取反。
-10010101的反码为101101010
3.补码:
正数:补码,原码,反码相同。
+110011补码为0110011
负数:补码为符号位加上原数值按位取反后再在最低位加1,即为反码加1.
-110011补码为1001101
4.取反:
以 8 和 -8为例:
~8
(1)原码:00001000
(2)补码:00001000
(3)反码:00001000
因为计算机中存储是以补码的方式存储,所以我们对一个数取反要先对它的补码进行取反,然后求取反后的原码,而不是直接对其原码进行取反
(1)补码取反:11110111
(2)取反后的反码:11110110(反码=补码-1)
(3)原码:10001001
原码二进制转换为十进制为:-9
所以8取反为-9
~(-8)
(1)原码:1 1000(第一个1为符号位,为-)
(2)反码:1 0111
(3)补码: 1 1000
补码取反: 0 0111
取反后的反码: 0 0111
取反后的原码: 0 0111
所以-8的取反为7
总结 n的反码为 “-(n+1)”