关于IEEE754浮点数阶码
2016-11-02 16:46
190 查看
问题:
1、为什么和定点数的移码偏置值不同,定点数是2^n,浮点数是2^n-1
2、而且为什么范围是1~254(8位),按理说不应该是0~255吗?
回答:
IEEE754浮点数表示方法:(-1)^s * 1.M * 2^(E-127)
对于阶码为0或255的情况,IEEE754标准有特别的规定:
如果 E 是0 并且 M 是0,则这个数的真值为±0(正负号和数符位有关)
如果 E = 255 并且 M 是0,则这个数的真值为±∞(同样和符号位有关)
如果 E = 255 并且 M 不是0,则这不是一个数(NaN)。
短浮点数和长浮点数(不含临时浮点数)的存储在尾数中隐含存储着一个1
因此在计算尾数的真值时比一般形式要多一个整数1。
对于阶码E的存储形式因为是127的偏移,所以在计算其移码时与人们熟悉的128偏移不一样,
正数的值比用128偏移求得的少1,负数的值多1,为避免计算错误,方便理解,常将E当成二进制真值进行存储。
例如:将数值-0.5按IEEE754单精度格式存储,
先将-0.5换成二进制并写成标准形式:-0.5(10进制)=-0.1(2进制)=-1.0×2-1(2进制,-1是指数),
这里s=1,M为全0,E-127=-1,E=126(10进制)=01111110(2进制),则存储形式为:
1 01111110 000000000000000000000000(2进制)=BF000000(16进制)
这里不同的下标代表不同的进制。
1、为什么和定点数的移码偏置值不同,定点数是2^n,浮点数是2^n-1
2、而且为什么范围是1~254(8位),按理说不应该是0~255吗?
回答:
IEEE754浮点数表示方法:(-1)^s * 1.M * 2^(E-127)
对于阶码为0或255的情况,IEEE754标准有特别的规定:
如果 E 是0 并且 M 是0,则这个数的真值为±0(正负号和数符位有关)
如果 E = 255 并且 M 是0,则这个数的真值为±∞(同样和符号位有关)
如果 E = 255 并且 M 不是0,则这不是一个数(NaN)。
短浮点数和长浮点数(不含临时浮点数)的存储在尾数中隐含存储着一个1
因此在计算尾数的真值时比一般形式要多一个整数1。
对于阶码E的存储形式因为是127的偏移,所以在计算其移码时与人们熟悉的128偏移不一样,
正数的值比用128偏移求得的少1,负数的值多1,为避免计算错误,方便理解,常将E当成二进制真值进行存储。
例如:将数值-0.5按IEEE754单精度格式存储,
先将-0.5换成二进制并写成标准形式:-0.5(10进制)=-0.1(2进制)=-1.0×2-1(2进制,-1是指数),
这里s=1,M为全0,E-127=-1,E=126(10进制)=01111110(2进制),则存储形式为:
1 01111110 000000000000000000000000(2进制)=BF000000(16进制)
这里不同的下标代表不同的进制。
相关文章推荐
- 关于一道IEEE754浮点数标准的百度面试题再论
- 关于java 的 Classpath全解
- 关于Windows中ActiveX控件注册
- 关于在linux下磁盘定额的实现
- 关于fvwm2的简单配置
- 关于制作 Linux 自启动光盘
- WIN32汇编: 5.学习更多的关于文本的知识
- 关于用VC,VB进行图像数据(二进制大对象)存储数据库的一点心得
- 关于Out Of Memory 的绝版回答
- 关于WEB应用程序的打印组件开发初探
- 关于安卓手机访问一些网站或者Fiori应用弹出安装证书的提示
- 关于Visual Basic 6.0类开发(一)
- 关于Delphi中预编译指令的使用方法
- 关于applet写入文件的处理
- 关于窗口的操作详谈
- jsp、servlet关于中文问题再谈
- 关于异常的使用心得
- J2EE与.NET平台关于电子企业的两种设想(1)
- 关于错误信息的显示
- 一个关于#include的问题