其中Ex, Ey分别维数x和y的阶码,Mx, My为数x和y的尾数.
两浮点数进行加法和减法的运算规则是:
完成浮点加减运算的操作过程大体分为四步:
Ⅰ.0操作数检查
如果判知两个操作数x或y中有一个数为0,即可得知运算结果而没有必要再进行后续的一系列操作,以节省运算时间。
Ⅱ.比较阶码大小并完成对阶
两浮点数进行加减,首先看两数的阶码是否相同,即小数点位置是否对齐。若阶码相同,表示小数点是对齐的,就可以进行尾数的加减运算。反之,表示小数点位置没有对齐,此时必须使两数的阶码相同,这个过程称为对阶。
对阶时,通过尾数的移动以改变Ex或 Ey,使之相等。对阶操作规定尾数右移,使阶码相应增加。显然,一个增加后的阶码与另一个阶码相等,所增加的阶码一定是小阶。因此在对阶时,总是使小阶向大阶看齐,即小阶的尾数向右移位(相当于小数点左移),右移一位,阶码加1,直到两数阶码相等。
Ⅲ.尾数进行加或减运算
对阶完成后,即可进行尾数的求和运算,不论是加法运算还是减法运算,都按加法进行操作。
Ⅳ.结果规格化并进行舍入处理
尾数求和的结果可以得到01.····或10.····,破坏了规格化,此时需将尾数运算结果右移或左移以实现规格化表示,称为向右规格化或向左规格化。
在对阶或向右规格化时,尾数向右移位,被右移的尾数的低位部分会被丢掉,因此要进行舍入处理
就近舍入 将结果舍入为最接近且可以表示的值,实质就是通常所说的“四舍无入”。
朝0舍入 结果朝0方向舍入,也就是简单的截尾。
朝+∞舍入 对正数,多余位不全为0则向最低有效位进1;对负数,则截尾。
朝-∞舍入 与朝+∞舍入相反。
溢出处理
浮点数的加减运算过程中会产生尾数溢出和阶码溢出。尾数溢出分为尾数上溢和尾数下溢,尾数上溢可通过尾数右移,阶码加1重新对齐;尾数下溢进行舍入处理。因此可以说,浮点数的溢出是以其阶码溢出表现出来的。
阶码溢出分为阶码上溢与阶码下溢。
阶码上溢 超过了阶码可能表示的最大值的正指数值。
阶码下溢 超过了阶码可能表示的最小值的负指数值。
举例说明:
设x=0.5₁₀ ,y=-0.4375₁₀ ,假设尾数有效位4位,用二进制形式求(x+y)
解:
第一步:对阶,y阶小,调整y的指数向x阶看齐
第二步:尾数相加
第三步:规格化
第四步:检查上溢或下溢
指数采用移码,127≥ -4 ≥ -126,结果无上溢亦无下溢。
第五步:舍入操作
尾数有效位刚好是4位,无需舍入。
最后结果:








No comments:
Post a Comment