:Mx为浮点数的尾数,一般为绝对值小于1的规格化数(补码表示时允许为-1),机器中可用原码或补码表示。Ex为浮点数的阶码,一般为整数,机器中大多用补码或移码表示。R为浮点数的基数,常用2、8、10或16表示。以下以基数为2进行讨论。浮点加减运算设两个浮点数尾数的加减运算规则与定点数完全相同。当两浮点数阶码不等时,因两尾数小数点的实际位置不一样,尾数部分无法直接进行加减运算。如:x=×103y=×102=×103浮点加减运算的步骤对阶,使两数的小数点位置对齐。尾数求和,将对阶后的两尾数按定点加减运算规则求和(差)。规格化,为增加有效数字的位数,提高运算精度,必须将求和(差)后的尾数规格化。舍入,为提高精度,要考虑尾数右移时丢失的数值位。判断结果,。小阶向大阶看齐,阶码较小的数,其尾数向右移,每右移一位,阶码加“1”,直到两数阶码相同为止。尾数右移时可能会发生数码丢失,影响精度。例:两浮点数x=×201, y=-()×211,求x+y。(1)首先写出x、y在计算机中的补码表示。[x]补=00,01;,[y]补=00,11; (2)在进行加法前,必须先对阶,故先求阶差: [ΔE]补=[Ex]补-[Ey]补=[Ex]补+[-Ey]补=00,01+11,01=11,10 即ΔE=-2,表示x的阶码比y的阶码小,再按小阶向大阶看齐的原则,将x的尾数右移两位,其阶码加2。得[x]‘补=00,11;(01) 此时,ΔE=0,表示对阶完毕。(减)运算规则进行运算。注意:并不考虑溢出——溢出由阶码决定接上例,两数对阶后得: [x]ˊ补=00,11; [y]补=00,11; 则[Sx+Sy]补=+= 即[x+y]补=00,11;:如果采用双符号位的补码,则当S>0时,其补码规格化形式为[S]补=××…× 当S<0时,其补码规格化形式为[S]补=××…×但对S<0时,有两种情况需特殊处理。S=-1/2,则[S]补=…0。对于补码而言,它不满足于上面的规格化表示式。为了便于硬件判断,特规定-1/2是规格化的数(对补码而言)。S=-1,则[S]补=…0。因小数补码允许表示-1,故-1视为规格化的数。规格化又分左规和右规两种。左规。××…×××…×时,需左规。左规时尾数左移一位,阶码减1,直到符合补码规格化表示式为止。右规。当尾数出现01.××…×或10.××…×时,表示尾数溢出,这在定点加减运算中是不允许的,但在浮点运算中这不算溢出,可通过右规处理。右规时尾数右移一位,阶码加1。接上例,求和结果为[x+y]补=00,11; 尾数的第一数值位与符号位相同,需左规,即将其左移一位,同时阶码减1,得[x+y]补=00,10;。,可能会将尾数的低位丢失,引起误差,影响精度,为此可用舍入法来提高尾数的精度。进行舍入时应满足两个要求首先,对每一次运算的结果而言,要保证误差不超过给定的范围。比如,设机器尾数长39位,要求每次运算误差不超过末位(即第39位)的“1”,即小于2-39。其次在大量的运算过程中要保证误差的平衡,即在每一次运算时,由于舍入处理,可能使运算结果增大了,也可能减少了。但总的说来,增加和减少的机会必需是均等的,否则会产生很大的积累误差。
浮点数运算方法 来自淘豆网m.daumloan.com转载请标明出处.