IEEE 754

 最近因为要解析一个二进制文件,里面的整型字符当然好理解,但是对于浮点型数据就有问题了。

 分析了好久,后来知道浮点数据基本按照ieee标准进行存储。

 接着就开始学习IEEE754标准,找相关资料。

 英文太烂,只能看中文的。 花了很多时间终于还是找到了一篇比较完整基础的教程(我认为),每一步的换算过程。

 现在按自己理解的记录一下,以后就不需要重头学起了。

 

 例子123.456

 整数部分直接转换  123   =   1111011

 小数部分按以下格式转换

 0.456 =   01110100101111000 110

换算公式为:

0.456        0.5 (1/2^1)     0.456   < 0.5                      0      0.456-0.5*0       = 0.456  
0.456        0.25(1/2^2)    0.456   > 0.25                    1      0.456-0.25*1      = 0.206
0.206        0.125              0.206   > 0.125                  1      0.206-0.125*1     = 0.081
0.081        0.0625            0.081   > 0.0625                1      0.081-0.0625*1    = 0.0185
0.0165      0.03125          0.0165  < 0.03125             0      0.0185-0.03125*0  = 0.0185
0.0165      0.015625        0.0165  > 0.015625           1      0.0185-0.015625*1 = 0.002875
0.002875  0.0078125      0.002875 < 0.0078125      0      0.002875-0.0078125*0 = 0.002875
0.002875  0.00390625    0.002875 < 0.00390625    0      0.002875-0.00390625*0 = 0.002875
0.002875  0.001953125  0.002875 > 0.001953125  1      0.002875-0.001953125*1 = 0.000921875

  符号位       阶码(整数的移位:6+127)                 尾数
        0      10000101                     11101101110100101111000

上面是整数部分的浮点数据

 对于小于1的浮点数据(0.465)首先将它转换一下。

0.465 = 1.823 *  2(-2)

整数部分:  1 = 1

小数(按照上面的公式) 0.823 = 110100101 (太长了,有兴趣自己去算,这里以0代替,会有点误差)

 符号位       阶码(整数的移位:-2+127)                 尾数
        0      01111101                      11010010100000000000000  = 0x3EE94000

 

最后推荐一个转换的网站输入16进制获得数据。0x3EE94000 得到的浮点数据为:0.45556640625

http://babbage.cs.qc.edu/IEEE-754/32bit.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值