Skip to content

补码加减运算与溢出检测

考情分析

补码加减运算与溢出判断在 408 中属于高频考点,几乎每年都以选择题或大题形式出现。三种溢出判断方法(单符号位法、双符号位法/变形补码、进位法)都要掌握。

补码加减法规则

补码加法

[A+B]=[A]+[B](mod2n)

即两数补码直接相加,符号位参与运算,最高位(符号位)的进位丢弃。

补码减法

[AB]=[A]+[B]

减法转化为加法,关键是求 [B]:将 [B] 连同符号位一起取反加 1(即求补操作)。

求补操作的快速方法:从最低位开始,找到第一个 1,保持该位及其右侧所有位不变,左侧所有位(包括符号位)取反。

[B]=10110100,求 [B]

最低位的 1 在第 3 位(从右数),保留右侧 100,左侧 1011001001

[B]=01001100

溢出的本质

溢出指运算结果超出了机器数所能表示的范围。

对于 n 位有符号补码:

  • 正溢出(上溢):结果 >2n11,两个正数相加但结果变成负数
  • 负溢出(下溢):结果 <2n1,两个负数相加但结果变成正数

TIP

同符号数相加才可能溢出,异符号数相加不会溢出。

三种溢出判断方法

方法一:单符号位法

观察操作数符号位和结果符号位:

V=ABS+ABS

用语言描述:

  • 两个正数相加,结果为负 → 正溢出
  • 两个负数相加,结果为正 → 负溢出
  • 其他情况不溢出
A 符号位B 符号位S 符号位溢出判断
000无溢出
001正溢出
010无溢出
011无溢出
100无溢出
101无溢出
110负溢出
111无溢出

方法二:双符号位法(变形补码/模 4 补码)

将每个操作数扩展为双符号位:

  • 正数:补两个 0,如 +X00X
  • 负数:补两个 1,如 X11X

运算后观察结果的两位符号位:

双符号位结果含义
00结果为正,无溢出
11结果为负,无溢出
01正溢出(结果应为正但超出范围)
10负溢出(结果应为负但超出范围)

口诀:双符号位相同 → 无溢出;不同 → 溢出(高位符号位是正确符号)。

方法三:进位法

观察加法器最高数值位向符号位的进位 C1 和符号位向更高位(或溢出位)的进位 C0

V=C0C1
  • C0C1(XOR = 1)→ 溢出
  • C0=C1 → 无溢出

交互可视化

加载可视化中...
加载可视化中...

典型例题

例题 1:8 位补码,计算 [A]=01100100[B]=00111000,求 [A+B] 并判断是否溢出。

  01100100  (+100)
+ 00111000  (+56)
----------
  10011100

结果符号位为 1,但两个正数相加结果为负 → 正溢出

双符号位验证(8位字长扩展为9位:2位符号 + 7位数值):

  001100100
+ 000111000
----------
  010011100

双符号位为 01 → 确认正溢出。

例题 2:8 位补码,计算 [A]=10110101[B]=11001011,求 [A+B]

真值:A=75B=53A+B=128,在 8 位补码范围 [128,127] 内。

  10110101  (-75)
+ 11001011  (-53)
----------
1 10000000  进位丢弃

结果为 10000000 = 128无溢出

进位法:C0=1(符号位进位),C1=1(最高数值位进符号位),V=11=0,无溢出。

例题 3:用双符号位法计算 A=70B=80 的补码加法。

70 的补码(8位):10111010,双符号位扩展为9位:11011101080 的补码(8位):10110000,双符号位扩展为9位:110110000

  110111010
+ 110110000
----------
1 101101010  最高进位丢弃

双符号位为 10负溢出150<128)。

考点清单

  • [ ] [A+B]=[A]+[B],符号位参与运算
  • [ ] 补码减法:[AB]=[A]+[B],对 [B] 连符号位一起求补
  • [ ] 同符号数相加才可能溢出,异符号不溢出
  • [ ] 单符号位法:看操作数符号与结果符号
  • [ ] 双符号位法:00/11 无溢出,01 正溢出,10 负溢出
  • [ ] 进位法:V=C0C1
  • [ ] 快速求补:找最低位 1,左侧全部取反(含符号位)

真题练习

相关真题(9题)

2025Q14选择题2分

补码减法运算与溢出标志OF的判断

2023Q16选择题2分

减法运算中OF和CF标志位的判断

2018Q13选择题2分

补码真值计算与减法运算

2018Q19选择题2分

减法运算中CF和OF标志位的判断

2014Q13选择题2分

8位补码加减运算的溢出判断

2013Q14选择题2分

补码移位与加法组合运算

2011Q43综合题11分

无符号与有符号整数运算及溢出综合题

2010Q13选择题2分

8位补码乘法溢出判断

2009Q12选择题2分

int与short混合运算中的符号扩展与类型转换