原码:先将十进制数转换成二进制数,然后把最高位作为符号位,正数设为“0”,负数设为“1”
反码:正数的反码和原码一样,负数的反码就是:符号位不变,数值位逐位取反
补码:正数的补码和原码一样,负数的补码就是:反码的最低位加1
看一下:求出45和-45在8位机器中的原码反码补码
原码 反码 补码
+45 00101101 00101101 00101101
(原码、反码、补码都一样)
-45 10101101 11010010 (最高位没变,数值位取反) 11010011(反码最低位加1)
计算机中,只有补码。
按照补码的定义:
对于正数和零,补码就等于原数;
对于负数,要用模,减去该数的绝对值。
如,求-1的8位补码:
[-1]补 = 256 - 1 = 255 = 1111 1111 B