非0正实数 0 0 f≠0 2 -126 (0.f) 0 0 f≠0 2 -1022
(0.f)
非规格化的非0负实数 1 0 f≠0 -2 -126 (0.f) 1 0 f≠0 -2 -1022
(1.f)
2.实数(浮点数)的四则运算
浮点数的加、减运算要比定点数(整数)复杂得多。下面只做简要介绍。
设浮点数 A=As ×2Ea ,B=Bs ×2Eb 则
和数 C=(As ×2Ea-Eb+Bs )×2Eb ,差 D=(As ×2Ea -Eb -Bs )×2Eb(若Ea ≤Eb )
或者:
和数 C=(As ×Bs ×2Eb -Eb )×2Ea ,差 D=(As -Bs ×2Eb -Ea )×2Ea (若Ea >Eb )一般说来,浮点数的加、减运算有如下几个步骤:
(1)检测A和B中有无0,若A=0,则C=B,若B=0,则C=A。运算结束。
(2)计算两数阶码之差,即d=Ea -Eb ,若d>0,则将尾数Bs 向右移d位,若d<0,则将尾数A s 向右移-d位,若d=0,则As 和Bs 均不移位。这个过程叫做“对阶”。
(3)两尾数相加或相减。
(4)把结果进行规格化。对于Pentium微处理器来说,若结果尾数绝对值小于1,则尾数不断左移且阶码不断减1,直至尾数绝对值大于或等于1;若结果尾数绝对值大于或等于2,则尾数右移1位且阶码加1。
注意:两浮点数加/减时,在结果规格化的过程中,可能会发生“上溢”或“下溢”。浮点数的乘/除法比加/减法稍简单一些,其公式为:
乘积=(As ×Bs )×2Ea +Eb 商=(As /Bs )×2Ea +Eb 处理过程如下:
(1)检测A和B中有无0,若AS =0,则乘积(商)=0,运算结束;若BS =0,乘法时乘积=0,除法时商为∞,运算结束
(2)计算两数阶码之和(或差)。(3)两尾数相乘或相除。
(4)把结果进行规格化。即,若结果尾数绝对值小于1,则尾数不断左移且阶码不断减1;若结果尾数绝对值大于或等于2,则尾数右移且阶码加1。
注意:两浮点数乘/除时,在阶码相加(减)的过程中,或者在结果规格化的过程中,可能会发生“上溢”或“下溢”。
浮点数运算过程中,为了保证浮点数运算的精度,当尾数右移时,对移出的位还需进行“舍入”处理。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |