正数的补码、原码和反码相同;
负数的反码符号位为" ",真值取反;其补码即反码加一。
CPU并没有减法运算器,而计算机对减法的处理需要则用到补码,从而实现将二进制数的减法转化为加法运算,以达到电路设计的目的。
计算机对二进制数的加法运算有溢出的特点,那么可以考虑将减法通过加法溢出达到相同的效果。
举个例子,8 bit 二进制数 的计算在取值达到 时溢出,那么考虑算式:,即算式: 。
任意两数的加减运算等价于对应补码的二进制加减运算(最高位不进位)
的原码变为 的反码,即 变为 ,相当于 减去 ,也就是 , 再变为 的补码,也就是 ,相当于 这时,再用 加上 的补码(),从而说明了 的补码与 的补码相加,在数值上等价于 而 恰好溢出,相当于结果对 取模,也就是 。
由上述过程,说明了补码相加即利用了计算机二进制数的溢出实现减法过程。