有关浮点数的详细解释

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

众所周知,科学计数法既可以表示整数,也可以表示小数,并且表示的数据范围很大。

在计算机中也引入了类似于十进制科学计数法的方法来表示实数,称为浮点数表示法,因其小数点位置不固定而得名。

1.浮点数的表示方法。

用浮点数表示法不仅可以表示整数和纯小数,而且可以表示一般的实数,其表示范围比定点数要大得多。因为无论采用定点还是浮点表示,n位编码总是最多只能表示2n个数,所以采用浮点表示法虽然扩大了表示范围,但并没有增加可表示的数值的个数,只是数据间的间隔变稀疏了。

一种浮点数的格式:

| M s | E s | E l-2 |...| E0 | M-1 | M-2 |...| M-(m-1) |

数符阶符阶码尾数

可见,浮点数的编码由两部分组成:阶码E和尾数M。浮点数表示的数值位:(-1)M s · M · B E.

其中,B是阶码的底,也就是尾数M的基数,一般为2。

E为阶码,即指数,为带符号的定点整数,常用移码表示,其中,E s为阶符,表示阶的正负。如果用移码表示阶码E,当阶码被作为一个无符号整数对待时,其数的大小相对关系不变,为浮点数加减法时的对阶运算提供了方便。

M是尾数,是定点纯小数,常用补码表示,也有用原码表示的。M s是尾数的符号位,安排在最高位,表示该浮点数的正负。

浮点数的表示范围主要由阶码决定,精度则由尾数决定。

2.规格化浮点数。

为了简化浮点数的操作,充分利用尾数的二进制位数来表示更多的有效数字,通常采用浮点数规格化形式,即将位数的绝对值限定在某个范围之内。一个规格化的数是一个有效数的最高有效位非0的数。

如果阶码的底为2,则规格化浮点数的尾数应满足条件:1/2<=|M|<1。

当尾数用补码表示时,若尾数M>=0,由于[1/2]补=0.10000..0 ,尾数应具有如下格式:

M=0.1xxxx...x(其中x表示既可以为0也可以为1)

若尾数M<0,由于[-1/2]补=1.10000..0,[-1]补=1.00000..0,为使计算机判断方便,一般不把[-1/2]补列为规格化的数,而把[-1]补列为规格化的数,因此尾数应具有格式M=1.0xx...x,即:符号位为1,小数点右侧的第一数值位为0时为规格化数。

这样:当M<0时,[-1]补<=[M]补<[-1/2] 补

规格化操作有两种,“左规”和“右规”。若采用变形补码表示尾数,则当结果的尾数出现11.1xx..x或00.0xx..x 的形式时,需将尾数左移1位,阶码减1,即111.xx..x或000.xx..x,直到尾数规格化为止,这个过程叫做“左规”。当浮点运算结果的位数出现01.xxx..x或10.xxx..x的形式时,并不一定溢出,应先将尾数右移一位,阶码+1,再判断是否溢出,这个过程叫做“右规”。

若采用上述规格化浮点数格式,以2位底,阶码L位(含一位阶符),用移码表示;尾数m位(含一位数符),则浮

点数能表示的

最小正数: +(1-2-(m-1))·2(2^(l-1)-1)。

最大正数: +(2-2^(l-1))/2

最大负数: -(1/2+2-(m-1))·2-2^(l-1).

最小负数: -1·22^(l-1)-1。

当一个数的大小超出了浮点数的表示范围时,称为溢出。溢出判断只是对规格化的浮点数的阶码进行判断。当阶码小于机器能表示的最小阶码时,称为下溢,此时一般当做机器零处理,机器继续运行;当阶码大于机器所能表示的最大阶码时,称为上溢,这是机器必须转入溢出故障的中断处理程序进行相应的处理

负上溢 | 可表示的负数| 负下溢 | 正下溢 | 可表示的正数 | 正上溢

IEEE754标准规定浮点数的尾数用原码(符号加绝对值)表示,对于用原码表示的规格化的二进制浮点数,尾数有效位的第一位一定是1,而不是0,因此这个默认的1也省去了,从而使得有效位又增加一位,这样,23位尾数的有效位长度实际是24位。

IEEE单精度浮点格式具有24位有效字符,字宽32位(1位符号,8位阶码,23位尾数);双精度浮点格式具有53位幼小数字精度,字宽64位(1位符号,11位阶码,52位尾数)。

IEEE754标准另外一个特点是用特殊记号标记某些异常事件,记录非规格化数,正无穷,负无穷,以及非数。

在IEEE754标准中,基数隐含为2;阶码用移码表示,移码的偏移值并不是通常n位移码所用的2n-1,而是2n-1-1,这是因为尾数规格化后必须为0.100..0,而我们现在尾数用1.000..00表示,即尾数左移1位,所以阶码偏移值为2n-1-1。

IEEE754 单精度格式位模式表示的值

0

e=0,f!=0 | (-1)s·2e-126·0.f (非规格化数)

e=0,f=0 | (-1)s·0 (有符号的0)

s=0;e=255,f=0 | 正无穷

s=1;e=255;f=0 | 负无穷

s=u,e=255,f!=0 | 非数

IA-32架构软件开发手册/content/www/us/en/processors/architectures-software-developer-manuals.ht ml

相关文档
最新文档