学习IEEE754标准需要注意的几个问题

1、什么是IEEE754标准

用来规范化浮点数,其格式是

(1)32位

=(-1)s×(1.)×2E-127     e-127

(2)64位

=(-1)s×(1.)×2E-1023    e-1023

其中,s是符号位,M是尾数,E是阶码,e是实际的指数值

 

           表 三种形式的IEEE754浮点数格式

参数单精度浮点数双精度浮点数扩充精度浮点数
浮点数字长326480
尾数长度P235264
符号位S111
指数长度E81115
最大指数+127+1023+16383
最小指数-126-1022-16382
指数偏移量+127+1023+16383
可表示的实数范围10-38~103810-308~1030810-4932~104932

 浮点数表示格式如下:

数符号S阶符Es阶码E尾数M

 

2、为什么阶码的偏移量是127?

先看下什么机器零:

(1)当浮点数尾数M=0,无论阶码E为何值,则该浮点数为0值

(2)当阶码的值遇到比它所能表示的最小值还小时,不管尾数M为何值,则浮点数为0值

(1)、(2)中的零值称为机器零

以32位浮点数为例:

"当阶码E 为全0且尾数M 也为全0时,表示的真值x 为零,结合符号位S 为0或1,有正零和负零之分。当阶码E 为全1且尾数M 为全0时,表示的真值x 为无穷大,结合符号位S 为0或1,也有+∞和-∞之分。这样在32位浮点数表示中,要除去E 用全0和全1(255)10表示零和无穷大的特殊情况,指数的偏移值不选128(10000000),而选127(01111111)。对于规格化浮点数,E 的范围变为1到254,真正的指数值e 则为-126到+127。因此32位浮点数表示的绝对值的范围是10-38~1038(以10的幂表示)。"——引自 白中英<<计算机组成原理>>

S(1位)    E(8位)        M(23位)    N(32位) 
符            0                0            (-1)S *2E-127·(1.M) 为规格化数                                    
               0               不等于0      (-1)S*2-126*(0.M) 为非规格化数
号       1到254之间     不等于0    (-1)S*2E-127*(1.M) 为规格化数
              255            不等于0      NaN(非数值)
位           255                0           无穷大 

其中红色字0、1表示隐含位,注意当数字N为非规格化数或是0时,隐含位是0。

如果选择偏移值128时,假设指数(不是阶码)为+127,按照e=E-128,则阶码为127+128=255,全为1 ,由上表可知N为NaN和无穷大

假设指数为0(包括正0和负0),按e=E-128,则正0+128=128,负0(补码)+128=0,由上可知E=0时,存在非规格化数

由于8位E中,只有7位有效数字,7位能表示的大小为0-127,所以偏移量可以在0-127中任取一值,在IEEE754Z中规定取127.

3、为什么阶码表示的最小指数是-126呢?

有2中描述可以得到,当偏移量为127时,若最小指数是-127,按e=E-127,则127+(-127)=0,E=0,存在非规格化数

故取-126,这也符合E的表示范围1~254。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 26
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值