版权声明:转载请注明出处,谢谢!!! https://blog.csdn.net/qhdhnbd110/article/details/82993503
补码运算的溢出判别方式为双高位判别法,利用Cs表示符号位是否进位,利用Cp表示最高数值位是否进位。如果Cs ^ Cp的结果为真,则代表发生了溢出(运算结果大于0则为负溢出,小于0则为正溢出),否则运算结果正确。
for example
1000 0011(补码为-3,原码为-125) 0000 0011(补码为3,原码为3)
+1100 1001(补码为-73,原码为-55) +1100 1001(补码为-73,原码为-55)
10100 1100(补码为76,原码为76) 01100 1100(补码为-76,原码为-52)
Cs为1,Cp为0所以产生了负溢出。 Cs为0,Cp为0所以结果正确。
判断最高数值位是否进位:将两个数的符号位单独提出相加,如果结果与运算结果的符号位相同,则代表没有进位,Cp为0,否则Cp为1.
0010 0011(补码为35,原码为35) 0010 0011(补码为35,原码为35)
+1110 1001(补码为-105,原码为-23) +0110 1001(补码为105,原码为105)
10000 1100(补码为12,原码为12) 01000 1100(补码为-12,原码为-116)
Cs为1,Cp为1所以计算结果正确。 Cs为0,Cp为1所以产生了正溢出。