定点数/浮点数的溢出:上溢和下溢
溢出分为上溢和下溢
算术溢出(arithmetic overflow)是指计算机进行算术运算产生的结果超出机器所能表示的范围。
溢出有上溢和下溢之分,在定点计算机和浮点计算机中,上溢和下溢的概念是不完全相同的。
在定点计算机中
从正方向超过了数的表示范围,称为上溢;从负方向超过了数的表示范围,则称为下溢。
定点机溢出示意图
在浮点计算机中
浮点数的表示范围主要由阶码来决定。 不论数的符号是正还是负,若阶码从正的方向超出了阶码的表示范围,称为上溢; 若阶码从负的方向超出阶码的表示范围,或者尾数为“0”时,统称为下溢。
浮点机溢出示意图
一般来说,计算机对于浮点数的下溢,则自动当作“0”来处理,不输出错误信息(精度的溢出); 而产生的上溢(范围溢出),计算机则产生==“溢出中断”==,并输出溢出的错误信息,甚至停止程序的运行
溢出简易判断规律
仅当两个符号相同的数相加或两个符号相异的数相减才可能产生溢出 即,溢出现象仅发生在,同号相加,异号相减的情况下.
如两个正数相加,结果的符号位却为 1 (结果为负); 一个负数减去 居个正数,结果的符号位却为 0 (结果为正)。 定点数加减运算出现溢出时,运算结果是错误的。 补码定点数加减运算溢出判断的方法有 3 种:
