1、正数的原码、反码、补码是一样的
如+1011111(95)的原码、反码、补码为:
原码 0101 1111
反码 0101 1111
补码 0101 1111
2、负数的原码、反码、补码转换
以-1011111(-95)的原码、补码、反码的转换为例:
(1)负数原码、反码转换
符号位不变,数值位按位取反 |
原码转反码
原码 1101 1111
反码 1010 0000 //符号位不变,数值位按位取反
反码转原码
反码 1010 0000
原码 1101 1111 //符号位不变,数值位按位取反
(2)负数原码、补码转换
符号位不变,数值位按位取反,末位+1 |
原码转补码
原码 1101 1111
反码 1010 0000 //符号位不变,数值位按位取反
补码 1010 0001 //末位+1
快速求法为:
符号位不变,从右往左找第一个1,这个1左边的取反,右边的不变 |
补码转原码
补码 1010 0001
1101 1110 //符号位不变,数值位按位取反为
原码 1101 1111 //末位+1
(3)负数反码、补码转换
反码转补码,末位+1;补码转反码,末位-1 |
反码转补码
反码 1010 0000
补码 1010 0001 //末位+1
补码转反码
补码 1010 0001
反码 1010 0000 //末位-1
3、总结:
正数的原码、补码、反码都一样;
负数的原码、反码转换:符号位不变,数值位按位取反;
负数的原码、补码转换:符号位不变,数值位按位取反,末位+1,【快速求法为:符号位不变,从右往左找第一个1,这个1左边的取反,右边的不变】;
负数的反码、补码转换:反码转补码,末位+1;补码转反码,末位-1。