zoukankan      html  css  js  c++  java
  • 浮点数据与IEE754

     在计算机系统(包括单片机)中,浮点数(单精度float和双精度的double)对采用IEE-754标准。该标准为 32 位浮点和 64 位双精度浮点二进制小数定义了二进制标准。

    IEEE 754 用科学记数法以底数为 2 的小数来表示浮点数。IEEE 浮点数用 1 位表示数字的符号(1为负0为正),用 8 位来表示指数,用23 位来表示尾数,即小数部分。作为有符号整数的指数可以有正负之分。小数部分用二进制(底数 2)小数来表示,这意味着最高位对应着值 (2 -1),第二位对应着 (2 -2),依此类推。对于双精度浮点数,用 11 位表示指数,52 位表示尾数。IEEE 浮点值的格式如图 1 所示。


    图 1. IEEE 754 浮点数的格式 

    指数(阶码)是以2为底的指数再加上偏移量127.。尾数的整数部分永远为1,因此不予保存,但它是隐含存在的。一个浮点数计算式为

    二:转换方法:可以用工具转换,也可以用C语言的内在机制转换

    2.1用工具转换:IEEE754转换程序(ieee754转换器)V2.0 绿色版 http://www.greenxf.com/soft/47195.html

    2.2用C语言转换:对于小端模式:

    typedef union

    {

      float f;

      unsigned char arry[4];  

    }Float_IEE754Conv_Typedef;

    float dat;

    Float_IEE754Conv_Typedef ConvDat;

    串口通讯中接收中

    for(u8 i=0;i<4;i++)

      ConvDat.arry[i]=接收寄存器;

    dat=ConvDat.f;

    串口发送中:

    ConvDat.f=dat;

    for(u8 i=0;i<4;i++)

      发送寄存器=ConvDat.arry[i];

    十进制转IEE754类型:

    unsigned int dat_w;

    ConvDat.f=123.4;

    for(u8 i=0;i<4;i++)

      dat_w |=ConvDat.arry[i]<<(i*8);

    IEE754类型转十进制:

    unsigned int dat_w;

    ConvDat.f;

    for(u8 i=0;i<4;i++)

      ConvDat.arry[i]=(u8)(dat_w>>(i*8));

    return ConvDat.f

  • 相关阅读:
    javascript静态页面传值的三种方法分享
    分布式缓存HttpRuntime.cache应用到单点登陆中_优化登陆
    C# 委托的三种调用示例(同步调用 异步调用 异步回调)
    使用SQL Server视图的优缺点
    浅析深究什么是SOA?
    IIS启用GZip压缩
    BI
    ASP.NET运行原理
    力扣算法:N 皇后
    力扣算法:基本计算器Ⅱ
  • 原文地址:https://www.cnblogs.com/jieruishu/p/6565177.html
Copyright © 2011-2022 走看看