在计算机系统(包括单片机)中,浮点数(单精度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

浮点数据与IEE754的更多相关文章

  1. 浮点数据有损压缩算法 附完整C代码

    在几年前的时候在做修图APP算法的时候, 曾经一度想过对3D Lut 预设数据进行压缩, 主要用于提升用户体验. 关于3d lut算法开源的资源也挺多的,就不多做科普了. 有兴趣的朋友,可以去查阅下f ...

  2. jxl读取excel浮点数据时,小数点后三位截取问题

    今天导入Excel数据时,发现很多浮点数据被自动四舍五入只保留了三位,原来是jxl里对getContents()进行了封装,对数值型数据作了该处理.一般我们会对读取excel的一整套流程作为工具类,那 ...

  3. 最好使用%f输出浮点数据,acm

    今天做题的时候发现使用%lf输出的时候总是wrong,而一旦改成%f就ac了,询问学长后知道,不要用%lf输出,浮点都用%f 然而我还是有疑惑,如果%f容不下输出的数据怎么办呢? 于是我就去百度 原来 ...

  4. 非正确使用浮点数据由项目产生BUG讨论的问题

    乘分配 当小学学会了乘法分配.详细乘法分配:并与多个两个数相乘的,他们能够把这个数字乘以,然后加入.由于一个恒定.乘法分配律也能够使用表达式的定义"(a+b)×c = a×c+b×c&quo ...

  5. float/double 浮点数据*100精度丢失问题

    工作中微信支付碰到的一个问题,金额是float数字,微信参数需要分且必须是整数,所以*100的时候就有问题了 System.out.println(9.9f*100); //989.99994Syst ...

  6. C++浮点数据的输出控制

    #include <iostream> #include <Windows.h> using namespace std; int main(void) { double va ...

  7. 数据存储_SQLite常用的函数

    一.简单说明 1.打开数据库 int sqlite3_open( const char *filename,   // 数据库的文件路径 sqlite3 **ppDb            // 数据 ...

  8. java实现写大量数据到文件中

    生成.txt文件 生成.csv文件 生成.xls文件 import java.io.BufferedWriter; import java.io.File; import java.io.FileOu ...

  9. java 基本类型包装类,system类,Math类,Assrays类,大数据运算

    实现字符串与基本数据之间转换 将字符串转成基本数据类型方法 例如:将字符串转成成int类型 String str ="123"; int a =Integer.parseInt(s ...

随机推荐

  1. Java集合的有序无序问题和线程安全与否问题

    首先,清楚有序和无序是什么意思: 集合的有序.无序是指插入元素时,保持插入的顺序性,也就是先插入的元素优先放入集合的前面部分. 而排序是指插入元素后,集合中的元素是否自动排序.(例如升序排序) 1.有 ...

  2. perl 语言学习总结

    .#!/usr/bin/perl -w 内建警告信息,Perl发出警告 .字符串 . 连接符 .重复次数 .字符串与数字之间的自动转换 .; + += *= .= not and or xor .pr ...

  3. CodeForces 547E:Mike and Friends(AC自动机+DFS序+主席树)

    What-The-Fatherland is a strange country! All phone numbers there are strings consisting of lowercas ...

  4. L3-007 天梯地图(30 分)

    本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线:一条是最短距离的路线.题目保证对任意的查询请求,地图上都至少存在一条可达路线. 输 ...

  5. c# namespace不能和class的name 相同

    比如namespace A, 内部Class A, 那么调用class A的方法只能通过A.A.XXX来访问. 或者说实例化一个class A,  A a = new A(); // compile ...

  6. git学习 7 git每次push都输入用户名 密码

    用如下命令改成SSH的方式 git remote rm origin git remote add origin git@github.com:username/repository.git git ...

  7. 【239】◀▶IEW-Unit04

    Unit 4 Youth Issues: Computer Use 1 Model1题目及范文分析 Some teenagers spend a lot of time playing compute ...

  8. 【转】eclipse修改workspace

    [转]eclipse修改workspace 以下方法选其中一种 1.进入 Window > Preferences > General > Startup and Shutdown ...

  9. 鼠标右键添加cmd

    给鼠标右键添加 cmd https://jingyan.baidu.com/article/3f16e003c408142591c103b2.html 有一些软件,最好不要装到Program File ...

  10. HDU - 2571 命运 DP倍数跳跃处理

    命运 穿过幽谷意味着离大魔王lemon已经无限接近了! 可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个机关.要知道,不论何人,若在迷宫中 ...