实数(浮点数)的表示
实数也称为浮点数,因为它的小数点位置不固定。实数是既有整数又有小数的数,整数和纯小数可以看做是实数的特例。任意一个实数在计算机内部都可以用“指数”(整数)和“尾数”(纯小数)来表示,这种用指数和尾数来表示实数的方法称为“浮点表示法”。所以,在计算机中实数也称为浮点数,而整数则称为定点数。
以流行的Pentium系列微处理器中的浮点数为例,它表示为如下形式。
可以看出,pentium系列微处理器中的浮点数具有如下性质。
① 最高位是符号位,它表示该浮点数(实数)的正负。
② 规格化浮点数的尾数的最高位(第1位)总是1,它不必在尾数表示出来。
③ 浮点数的0有两种,+0和-0。+0表示成全0,即0 00000000 000000000000000000000000,-0表示成1 00000000 00000000000000000000000。
④ 浮点数的表示范围虽然很大,但运算中还是可能出现超出它允许范围的一些结果,这种情况称为“向上溢出”。
⑤ 浮点数能表示绝对值很小的数,当运算中出现绝对值更小的数时,这种情况称为“向下溢出”,这时,处理器只能用0来表示。
实数的运算
浮点数的加、减运算要比定点数(整数)复杂得多。下面只作简要介绍。
① 检测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。
注意,两浮点数相乘或相除时,在阶码相加 (减)的过程中,或者在结果规格化的过程中,可能会发生上溢或下溢。浮点数运算过程中,为了保证浮点数运算的精度,当尾数右移时,对移出的位还需进行舍入处理。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |