如何判断两个补码表示的有符号数在做加减法运算时产生溢出

2025-05-07 11:53:25
推荐回答(2个)
回答1:

补码加法运算溢出判断三种方法:
[方法一]
Xf、Yf分别两个数的符号位,Zf为运算结果符号位。
当Xf =Yf =0(两数同为正),而Zf=1(结果为负)时,负溢出;
当出现Xf =Yf =1(两数同为负),而Zf=0(结果为正),正溢出.
[方法二]
Cs表示符号位的进位,Cp表示最高数值位进位,⊕表示异或。
若 Cs⊕Cp =0 ,无溢出;
若 Cs⊕Cp =1 ,有溢出。
[方法三]
用变形补码进行双符号位运算(正数符为00,负数符号以11)
若运算结果的符号位为"01",则正溢;
若结果双符号为10,则负溢出;
若结果的双符号位为00或11,无溢出。

回答2:

方法一:

  CPU 做加减法运算后,若 OF = 1,即表示发生溢出。

方法二:

  如果是人工计算,可按如下公式得出OF 的值:

    字节运算:OF = C7 ⊕ C6。

    字运算: OF = C15 ⊕ C14。

  式中的 Ci 代表第 i 位的进位。

方法三:

  准备咨询费,求助高人。