全国计算机考试三级PC技术第一章计算机应用基础知识(12)
实数的运算
浮点数的加、减运算要比定点数(整数)复杂得多。下面只作简要介绍。
设浮点数A=As×2Ea,B=Bs×2Eb
则和数C=(As×2Ea-Eb+Bs) ×2Eb,差D=(As×2Ea-Eb-Bs) ×2Eb(若Ea≤Eb)
或者:和数C=(As+Bs×2Eb-Ea) ×2Ea,差D=(As-Bs×2Eb-Ea) ×2Ea(若Ea>Eb)
一般来说,浮点数的加、减运算有如下几个步骤:
① 检测A和B中有无0,若A=0,则C=B,若B=0,则C=A。运算结束。
② 计算两数阶码之差,即d=Ea-Eb,若d>0,则将尾数Bs向右移d位,若d<0,则将尾数As向右移-d位,若d=0,则As和Bs均不移位。这个过程称为对阶。
③ 将对阶过后的两个尾数相加或相减。
④ 把结果进行规格化。对于Pentium处理器来说,若结果尾数绝对值小于1,则尾数不断左移且阶码不断减1,直至尾数绝对值大于或等于1;若结果尾数绝对值大于或等于2,则尾数右移1位阶码加1。
注意,两浮点数相加或相减时,在结果规格化的过程中,可能会发生上溢或下溢。浮点数的乘除法比加减法稍简单一些,其公式为:
乘积=(As×Bs)×2Ea+Eb
商=(As/Bs) ×2Ea-Eb
处理过程如下。
① 检测A和B中有无0,若As=0,则乘积(商)=0,运算结束;若Bs=0,做乘法运算时乘积=0,做除法运算时商为∞,运算结束。
② 计算两数阶码的和(或差)
③ 两尾数相乘或相除。
④ 把结果进行规格化,即:若结果尾数绝对值小于1,则尾数不断左移且阶码不断减1,若结果尾数绝对值大于或等于2,则尾数右移且阶码加1。
注意,两浮点数相乘或相除时,在阶码相加 (减)的过程中,或者在结果规格化的过程中,可能会发生上溢或下溢。浮点数运算过程中,为了保证浮点数运算的精度,当尾数右移时,对移出的位还需进行舍入处理,这里就不赘述了。