二进制溢出:符号位如何影响二进制加法
处理有符号二进制数时,加减运算可能超出固定位数所能表示的幅度范围。这种现象称作溢出,因符号位位置在计算开始时即固定。
下例用五位表示幅度,最左(第六)位为符号位。五幅度位可表示 2⁵ = 32 个整数值,范围0至最大幅度。因此最大正数为 +31₁₀(011111₂),最小为 –32₁₀(100000₂)。
六位数字域的限制
两个同用六位域的二进制数相加,结果可能超出 –32 到 +31 范围。例如 +17₁₀ 与 +19₁₀ 相加真和为 +36₁₀,五幅度位无法表示。

二进制答案 100100₂ 若视第六位为 −32₁₀,则解读为 –28₁₀,显然错误;溢出错误因真和超出六位域限制。丢弃最左“进位”位得错误结果。
两负数相加也有类似问题。如 –17₁₀ + –19₁₀ 应得 –36₁₀,六位域下二进制结果为正28,再次指示溢出。

用第七位作符号位
扩展域至七位——六幅度位加一符号位——可容纳更大和。下图显示同问题在足够宽域下的解决。

虽可通过转回十进制检测溢出,但对电子电路繁琐不实用。更高效方法依赖和的符号。若两同号数相加得异号结果,则发生溢出。域足够时,两正数和不可能为负,两负数和不可能为正。
反之,正负数相加永不溢出。和总比任一操作数更接近零,保证在可表示范围内。
这些溢出检测规则实现于数字加法器,是计算机算术基础概念。
相关练习:
- 二进制数学练习题
工业技术