当运算结果超出机器数所能表示的范围时,称为溢出。
显然,两个异号数相加或两个同号数相减,结果不会溢出。仅当两个同号数相加或两个异号数相减时,才有可能发生溢出。
一旦溢出,运算结果就不正确了,因此必须将溢出的情况检查出来。
运算在上例中,1256得出正确结果,34为溢出。
判别溢出的方法:
(1)符号相同的两数相加,如果结果的符号与加数(被加数)不相同,则为溢出。
(2)当任意符号两数相加时,如果数值最高位产生的进位 不等于 符号位的进位,则为溢出。
(3)采用双符号位。正数的双符号位为00,负11。符号位参与运算,当结果的两个符号位不相同时,为溢出。
一般运算时用双符号位,存储时仅保留一个符号位。因为正常情况下,两个符号位保持一致;
而发生溢出情况时,一般要产生出错信号,由CPU执行纠错程序进行处理,情况严重时将停机。
网友评论