IEEE754数据格式介绍和解析方式(超权威)

一、定义:什么是IEEE754

 

浮点数在C/C++中对应float和double类型,我们有必要知道浮点数在计算机中实际存储的内容。

IEEE754标准中规定float单精度浮点数在机器中表示用 1 位表示数字的符号,用 8 位来表示指数,用23 位来表示尾数,即小数部分。对于double双精度浮点数,用 1 位表示符号,用 11 位表示指数,52 位表示尾数,其中指数域称为阶码。

 

IEEE754规定:

 

  1. 单精度浮点数字长32位,尾数长度23,指数长度8,指数偏移量127;双精度浮点数字长64位,尾数长度52,指数长度11,指数偏移量1023;
  2. 约定小数点左边隐含有一位,通常这位数是1,所以上述单精度尾数长度实际为24(默认省略小数点左边的1则为23),双精度尾数长度实际为53(默认省略小数点左边的1则问53);

下面讲述使用IEEE754标准表示浮点数:

 

 

  1. 176.0625表示为单精度浮点数:

解:

 

1).先将176.0625转换为二进制数

小数点前:176 / 2 = 88  余数为 0
88 / 2=44 余数为 0                             
44 / 2 =22 余数为 0                       
22 / 2= 11 余数为 0                              
11 / 2 =5   余数为 1        
5 / 2=2 余数为 1                             
2/ 2  =1 余数为 0                                                                             
1/ 2=0        余数为 1    商为0,结束。                                                                       

 

小数点前整数转换为二进制:10110000                                          

 

   小数点后:小数部分乘以2,取整数部分,直至乘积小数部分为0   
0.0625 * 2 = 0.125   整数为0                 
0.125 * 2 = 0.25     整数为0             
0.25* 2 = 0.50       整数为0             
0.5* 2 = 1.0 整数为1,小数部分为0,结束

小数点后的小数位转换为二进制:0001

      故176.0625转换为二进制为:10110000.0001

2).IEEE754约定小数点左边隐含有一位,通常这位数是1,所以10110000.0001=1.01100000001 *  2^7(小数点向左偏移7位);

IEEE754约定单精度指数偏移量为127,所以176.0625使用IEEE754标准表示时,指数偏移量为 7+127=134 ,即:10000110

IEEE754约定单精度尾数长度为23,所以176.0625使用IEEE754标准表示时,尾数为:01100000001000000000000

176.0625>0,即为整数,所以符号位为0

3)由上得出:176.0625使用IEEE754规格化后的表示为:0  10000110 01100000001000000000000

二、解析

typedef union 
{
    float a;
    char b[4];
}Packet;
Packet packet;

void IEEE2Float(void)
{
    u8 i=0;
    u32 Temp32;
    float f_Temp;

    Temp32=0x435C0000;
    for(i=0;i<4;i++)
    {
        packet.b[i] =(u8)(Temp32>>(i*8));
    }
    f_Temp=packet.a;
}

三、链接

IEEE754介绍

IEEE754解析方法

  • 39
    点赞
  • 186
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值