补码

补码(Two's Complement)是计算机系统中最广泛使用的有符号数表示方法。与原码和反码相比,补码不仅解决了它们的一些缺陷,还简化了算术运算的实现,使得计算更加高效和统一。在补码表示法中,一个数的符号和数值部分通过特定的规则组合在一起:

  • 正数:补码与原码相同。符号位为0,其余位表示数值的二进制形式。
  • 负数:补码是其对应正数的二进制形式逐位取反(即0变1,1变0),然后加1。
补码的优缺点

优点

  • 唯一零:补码只有一种零(00000000),消除了原码和反码中的双零问题,简化了运算和逻辑处理。
  • 简化算术运算:加减运算统一处理,无需额外判断符号位,硬件实现更为简便高效。
  • 符号位与数值位统一:符号位与数值位共同参与运算,便于硬件电路的设计和优化。

缺点

  • 表示范围不对称:对于n位数,负数的表示范围比正数多一个(例如,8位补码表示范围为-128到+127)。
  • 初学者理解较难:相较于原码,补码的计算步骤(取反加一)对初学者来说可能较为复杂。
补码的计算示例

以8位二进制为例,计算-18的补码:

  1. 原码1 00010010(符号位为1,数值部分18的二进制为00010010
  2. 取反11101101
  3. 加111101110
  4. -18 的补码11101110

一个简单的转化办法是不看符号位,从右往左找到第一个1,以这个1为界,其左边所有的位取反即可。