【摘要】:若两数进行加减运算的结果超出给定的取值范围,就称为溢出。当计算过程中出现溢出时,要停止运算,进行相应的溢出处理。为了判断“溢出”是否发生,可采用两种检测方法。
由于计算机的字长是固定的,因此,计算机中数的表示范围(允许取值范围)是有限的。若两数进行加减运算的结果超出给定的取值范围,就称为溢出。当计算过程中出现溢出时,要停止运算,进行相应的溢出处理。
例2-15:x=+0.1011,y=+0.1001,求x+y=?
解:[x]补=01011000,[y]补=01001000
[x+y]补=10100000
x+y=-0.11
两个正数相加的结果成为负数,这显然是错误的。
为了判断“溢出”是否发生,可采用两种检测方法。
1.单符号位检测方法
判别溢出的方法是:用符号位的进位与最高有效位的进位的异或来检测,若异或的结果是1,则溢出;若结果是0,则没有溢出。
例2-16:x=+0.1001,y=+0.1110,用补码运算x+y,并判断是否溢出。(www.xing528.com)
解:[x]补=01001000,[y]补=01110000
[x+y]补=10111000
符号位的进位是0,最高有效位的进位是1,异或结果是1,表示溢出。
2.变形补码检测方法
变形补码检测方法(也称为双符号位检测方法)是:每个操作数在运算时都采用两个符号位,正数用00表示,负数用11表示,两个符号位与数值位一起参加运算,若运算结果的两个符号位的代码不一致时表示溢出;两个符号位的代码一致时,表示没有溢出。
例2-17:x=+0.1011,y=+0.1101,用变形补码求x+y,并判断是否溢出。
解:[x]补=00 101100,[y]补=00 110100
[x+y]补=01 100000
符号位的代码为01,表示运算结果溢出。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。