符号位的进位与最高数位的进位

补码运算溢出判断的原理
补码运算溢出时可以通过最高位与次高位进位来判断:若最高数值位向符号位的进位值与符号位产生的进位输出值不相同,则表明加减运算产生了溢出.但是为什么可以用这种方法判断呢?这种方法的原理是什么?

溢出,是通用的词汇,其含义,还是很容易理解的。

在计算机中,溢出,专用来说明:“补码运算结果超出预定的范围”。

八位的二进制,作为补码,其表示范围是:-128 ~ +127。

示意图如下:

当你的运算结果,小于-128 时,就会落入 +127 下面的范围,成为正数。

当你的运算结果,大于+127 时,就会进入-128 上面的范围,成为负数。

根据这些表现,你就可以找到两种“判别溢出”的方法。

一、两个数值相加,和,超出了-128~+127,必然就溢出。

二、两个补码相加,和的符号,不符合正常的逻辑关系,这就是溢出了。

另外,你还可以根据 OF 的值,来判断是否溢出。

----------------------

此外,还有“在二进制运算过程中”进行判断的方法。

即你所问的:通过“最高位的进位”与“次高位的进位”来判断。

把这两个进位,异或一下,就能得出溢出,或不溢出。

这种判断,是由 CPU 在内部运算时实现的,结果即在 OF 上给出。

作为人类,去掌握硬件的判断方法,并无实际意义。

只有一些爱得瑟的老师,才讲这种方法。



温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-08-10
5.2.2 溢出及补码溢出的判断 无论采用何种机器数,只要运算的结果大于数值设备所能表示数的范围,就会产生溢出. 溢出现象应当作一种故障来处理,因为它使结果数发生错误.异号两数相加时,实际是两数的绝对值相减,不可能产生溢出,但有可能出现正常进位;同号两数相加时,实际上是两数的绝对值相加,既可能产生溢出,也可能出现正常进位. 由于补码运算存在符号位进位自然丢失而运算结果正确的问题,因此,应区分补码的溢出与正常进位. [例5] 某数字设备用五位二进制表示数,计算 (1)9+3 (2)-9-3 (3)9+12 (4)-9-12 (1)[+9]补+[+3]补= 01001+ 00011 = 01100 = +12 正确; (2)[-9]补+[-3]补= 10111+ 11101 = 110100 = 10100(符号位进位自然丢失),其真值为-1100 = -12正确; (3)[+9]补+[12]补= 01001 + 01100 = 10101 其真值为-1011 =-11错误,产生了溢出; (4)[-9]补+[-12]补 = 10111+10100 = 101011 其真值为01011= +11 错误,产生了溢出. (1)、(2)两题结果均正确,查其最高位和次高位的进位位,不是均无进位产生,就是均产生进位;(3)、(4)两题结果均错误,查其最高位和次高位的进位位,只有一位产生了进位.此即为判断机器是正常进位还是溢出的基本依据,在微型机中可用异或电路来实现上述的判断.本回答被网友采纳
相似回答