补码运算溢出判断的原理
补码运算溢出时可以通过最高位与次高位进位来判断:若最高数值位向符号位的进位值与符号位产生的进位输出值不相同,则表明加减运算产生了溢出.但是为什么可以用这种方法判断呢?这种方法的原理是什么?
溢出,是通用的词汇,其含义,还是很容易理解的。
在计算机中,溢出,专用来说明:“补码运算结果超出预定的范围”。
八位的二进制,作为补码,其表示范围是:-128 ~ +127。
示意图如下:
当你的运算结果,小于-128 时,就会落入 +127 下面的范围,成为正数。
当你的运算结果,大于+127 时,就会进入-128 上面的范围,成为负数。
根据这些表现,你就可以找到两种“判别溢出”的方法。
一、两个数值相加,和,超出了-128~+127,必然就溢出。
二、两个补码相加,和的符号,不符合正常的逻辑关系,这就是溢出了。
另外,你还可以根据 OF 的值,来判断是否溢出。
----------------------
此外,还有“在二进制运算过程中”进行判断的方法。
即你所问的:通过“最高位的进位”与“次高位的进位”来判断。
把这两个进位,异或一下,就能得出溢出,或不溢出。
这种判断,是由 CPU 在内部运算时实现的,结果即在 OF 上给出。
作为人类,去掌握硬件的判断方法,并无实际意义。
只有一些爱得瑟的老师,才讲这种方法。