补码
补码(Two's Complement)是计算机系统中最广泛使用的有符号数表示方法。与原码和反码相比,补码不仅解决了它们的一些缺陷,还简化了算术运算的实现,使得计算更加高效和统一。在补码表示法中,一个数的符号和数值部分通过特定的规则组合在一起:
- 正数:补码与原码相同。符号位为0,其余位表示数值的二进制形式。
- 负数:补码是其对应正数的二进制形式逐位取反(即0变1,1变0),然后加1。
补码的优缺点
优点:
- 唯一零:补码只有一种零(
00000000),消除了原码和反码中的双零问题,简化了运算和逻辑处理。 - 简化算术运算:加减运算统一处理,无需额外判断符号位,硬件实现更为简便高效。
- 符号位与数值位统一:符号位与数值位共同参与运算,便于硬件电路的设计和优化。
缺点:
- 表示范围不对称:对于n位数,负数的表示范围比正数多一个(例如,8位补码表示范围为-128到+127)。
- 初学者理解较难:相较于原码,补码的计算步骤(取反加一)对初学者来说可能较为复杂。
补码的计算示例
以8位二进制为例,计算-18的补码:
- 原码:
1 00010010(符号位为1,数值部分18的二进制为00010010) - 取反:
11101101 - 加1:
11101110 - -18 的补码:
11101110
一个简单的转化办法是不看符号位,从右往左找到第一个1,以这个1为界,其左边所有的位取反即可。