反码转换为原码:符号位不变,数值位分别“按位取反”

[x]真值= -1101001 = -105
[x]反码= 10010110
[x]原码= 11101001

原码转换为反码:符号位不变,数值位分别“按位取反”

[x]真值= -1101001 = -105
[x]原码= 11101001
[x]反码= 10010110

原码转换为补码:符号位不变,数值位按位取反,末位再加1

[x] = 10011010 原码为负数
        11100101 符号位不变,其余各位变反
      +        1 
[x] = 11100110
# 补码的补码就是原码
[x] = 01010110  不区分正负数
        10101001  数值位按位取反
      +        1  末位加1
[-x] =10101010      

正整数的原码反码补码一样;负整数的反码是除了原码符号位其他位全部取反,补码是反码加一
由于正数的原码、补码、反码表示方法均相同,不需转换,所以仅以负数情况分析。

已知原码,求补码。
例:已知某数X的原码为10110100,试求X的补码和反码。
解:由[X]=10110100知,X为负数。求其反码时,符号位不变,数值部分按位求反;求其补码时,再在其反码的末位加1
1 0 1 1 0 1 0 0 原码
1 1 0 0 1 0 1 1 反码(符号位不变,数值位取反)
1 1 0 0 1 1 0 0 补码 (补码再加一)
故:X的补码=11001100X的反码=11001101
已知补码,求原码。
分析:按照求负数补码的逆过程,数值部分应是最低位减1,然后取反。但是对二进制数来说,先减1后取反和先取反后加1得到的结果是一样的,故仍可采用取反加1 有方法。
例:已知某数X的补码11101110,试求其原码。
解:由X的补码=11101110知,X为负数。
采用逆推法
1 1 1 0 1 1 1 0 补码
1 1 1 0 1 1 0 1 反码(末位减1
1 0 0 1 0 0 1 0 原码(符号位不变,数值位取反)

补码加法

符号位相加后若有进位,则舍去该进位数字。

# 任意两数的补码之和等于该两数之和的补码.

[x]+[y]=[x+y]

补码减法

# 两数差的补码等于两数补码之差
[x-y]=[x]-[y]=[x]+[-y]