当浮点数运算发生溢出时会发生什么呢?

我想请问一下,当浮点数运算发生溢出时会发生什么呢?
最新回答
心比柠檬酸

2024-10-02 10:08:18

当定点数运算发生溢出是:会直接发出错误信息。

定点数的运算和浮点数的运算是不同的,当定点数的运算出现溢出时那么运算的结果一定会是错误的。但是当浮点数运算发生溢出时不一定会产生溢出。我们可以通过规格化和舍入操作来将结果进行纠正,这样得到的结果并没有溢出。

扩展资料:

溢出的判断:

1、一位符号位判溢出,参加操作的两个数(减法时即为被减数和“求补”以后的减数)符号为相同,其结果的符号与源操作数的符号不同,即为溢出。

2、两位符号位判溢出,符号位用两位来表示,正数用00,负数用11表示,当符号位两个位置数字不同时则表示溢出,当两个符号位相同时,那么计算就没有溢出。

浮点数运算步骤:

1、对阶操作,即比较两个浮点数的阶码值的大小.求△E=Ex-Ey。当其不等于零时,首先应使两个数取相同的阶码值。为减少误差,可用另外的线路,保留右移过程中丢掉的一到几位的高位值,供以后舍入操作使用。

2、实现尾数的加(减)运算,对两个完成对阶后的浮点数执行求和(差)操作。

3、规格化处理,若得到的结果不满足规格化规则,就必须把它变成规格化的数,对双符号位的补码尾数来说,就必须是001××…×或110××…×的形式。

规格化处理规则是:当结果尾数的两个符号位的值不同时,表明尾数运算结果溢出。此时应使结果尾数右移一位,并使阶码的值加1,这被称为向右规格化,简称右规。

4、舍入操作。在执行对阶或右规操作时,会使尾数低位上的一位或多位的数值被移掉,使数值的精度受到影响,可以把移掉的几个高位的值保存起来供舍入使用。舍入的总的原则是要有舍有入,而且尽量使舍和入的机会均等,以防止误差积累。

5、判结果的正确性,即检查阶码是否溢出。浮点数的溢出是以其阶码溢出表现出来的。在加减运算真正结束前,要检查是否产生了溢出,若阶码正常,加(减)运算正常结束;若阶码下溢,要置运算结果为浮点形式的机器零,若上溢,则置溢出标志。