溢出的判别

Author: Date: 1994-03-25

        如何判别有无溢出呢?首先引进两个附加的符号:CS:表示最高位(符号位)的进位情况,如有进位,CS=1,否则,CS=0;
        CP:表示数值部分最高位的进位情况,如有进位,CP=1,否则,CP=0。
        设微型机的字长为n,则两个带符号位的数的绝对值都应小于2n-1。因而只有当两数同为正或同为负时,并且和的绝对值又大于2n-1时,才会发生溢出。
        两个正数相加,若数值部分之和大于2n-1,则数值部分必有进位CP=1,而符号位却无进位CS=0,这样的溢出称“正溢出”,结果出错;两个负数相加,若数值部分绝对值之和大于2n-1,则数值部分补码之和必小于2n-1,CP=0,而符号位肯定有进位CS=1,这种状态为“负溢出”结果也出错。
        两数相减时,溢出情况的判别完全类似,也是CP和CS状态相异时,发生溢出,在微机中,常用异或线路来判别有无溢出的产生,即若CSCP=1表示有溢出产生,否则无溢出产生。