原码:最高位为符号位,低位表示数值的绝对值
反码:正数反码与原码相同,负数反码其绝对值按位取反
补码:正数补码与原码相同,负数补码是其反码末位加1
移码:补码的符号位按位取反
注意:一般通过计算机计算的到的结果都是通过补码来计算得到的
例:求1与-1的和(假设机器字节长为8)
二进制表示1:00000001
二进制表示-1:10000001
注意:首位0表示正数,1表示负数
原码相加:0000,0001+1000,0001=1000,0002(逢2进1)=1000,0010
转换为十进制:首位为1(不计入计算,只作为符号),所以结果为负数,第二位为1,其他都为0,所以最终结果就是-2,由此可以看出该结果与我们平时通过计算计算得到的结果有出入,同时反码结果也不是0,只有补码的结果与我们平时计算的结果一致。
1 | -1 | 1+(-1) | |
原码 | 0000,0001 | 1000,0001 | 1000,0010 |
反码 | 0000,0001(正数不变) | 1111,1110(负数,原码取反) | 1111,1111 |
补码 | 0000,0001(正数不变) | 1111,1111(负数,反码末位加1) | 0000,0000(逢2进1,取前8位) |
移码 | 1000,0001 | 0111,1111 | 1000,0000 |
综合题:如果“2X”的补码是“90H”,那么X的真值是多少?
分析:(1)“90H”中H表示16进制,所以将90H转换成二进制
(2)真值即原码,所以需要将补码转换成原码
转换成二进制:90H = 1001,0000
补码:1001,0000 反码:1000,1111 原码:1111,0000
1111,0000转换成16进制 = -70H = -7x+0x=-112
所以2x = -112,x = -56
所以x的真值为-56