16路热电阻仪485通讯数据解析 帮高工解析

为什么说单精度float 浮点数的精度只有7位 ?

这个解释起来轻松一点,精度这里指的是最大有效数字的位数,即只需要考虑尾数部分就可以啦。

  对于float类型,尾数部分是23,转换成10进制的精度,223=10x223=10x –> x=23log2≈6.92 x=23log2≈6.92,所以23位2进制最多只能表示6位10进制数,这里就是头文件中FLT_DIG=6的来由。

  但还有一种说法,也是网上的主流说法,二进制小数点的第一位永远都是1,可以省略,实际上二进制的精度为24,所以10进制的精度为7。

---------------------

单精度浮点数所能表示数据的范围:以传统的32位为依据 不是IEEE754 的指数形式。

指数位 占用 8位 (包含一位符号位) 尾数部分 占用24位(包含一位符号位)


1


2


3


4


5


6


7


8


9


10


1

1


1

2


1

3


1

4


1

5


1

6


1

7


1

8


1

9


2

0


2

1


2

2


2

3


2

4


2

5


2

6


2

7


2

8


2

9


3

0


3

1


3

2


尾数部分(含有一位符号位)


指数部分(含有一位符号位)

浮点数IEEE754标准的表示法:

IEEE754规定:

(1)单精度浮点数字长32位,尾数长度23,指数长度8,指数偏移量127;双精度浮点数字长64位,尾数长度52,指数长度11,指数偏移量1023;

(2)约定小数点左边隐含有一位,通常这位数是1,所以上述单精度尾数长度实际为24(默认省略小数点左边的1则为23),双精度尾数长度实际为53(默认省略小数点左边的1则为53)

---------------------

例子1 176.0625 用IEEE754 标准格式表示:

整数部分 10110000

小数部分 0001

所以用二进制表示十进制的176.0625 的 形式为:

10110000.0001 表示为

因为 IEEE754 约定单精度的指数的偏移量为 127

所以指数为 127+7=134 用二进制表示为:1000 0110

因为IEEE754 约定尾数的长度为 23 由于尾数 1.01100000001小数点左侧的1是省略的,

所以 尾数的 表示形式 为 0110 0000 0010 0000 0000 000

共23位

因为是整数,符号位为0

所以176.0625 以IEEE754标准在内存中的存放形式为


1


2


3


4


5


6


7


8


9


10


1

1


1

2


1

3


1

4


1

5


1

6


1

7


1

8


1

9


2

0


2

1


2

2


2

3


2

4


2

5


2

6


2

7


2

8


2

9


3

0


3

1


3

2


符号位


指数部分(含127偏移量)


尾数部分


0


1


0


0


0


0


1


1


0


0


1


1


0


0


0


0


0


0


0


1


0


0


0


0


0


0


0


0


0


0


0


0

例子2

把23.7度用IEEE-754 表示出来

23对应的二进制为 10111

十进制0.7 对应的小数部分为:


乘以2


取整数


余小数

     

0.72=1.4


1


0.4

     

0.42=0.8


0


0.8

     

0.82=1.6


1


0.6

     

0.62=1.2


1


0.2

     

0.22=0.4


0


0.4

     

0.42=0.8


0


0.8

     

0.82=1.6


1


0.6

     

0.62=1.2


1


0.2

     

0.22=0.4


0


0.4

     

0.42=0.8


0


0.8

     

0.82=1.6


1


0.6

     

0.62=1.2


1


0.2

     

0.22=0.4


0


0.4

     

0.42=0.8


0


0.8

     

0.82=1.6


1


0.6

     

0.62=1.2


1


0.2

     

0.22=0.4


0


0.4

     
           
           

观察到用二进制表示十进制小数0.7 出现了 循环

十进制的23.7度用二进制表示

10111.10110 0110 0110 0110 0110 0110 0110 0110

把上面的数表示成规范化小数形式

1.0111 1011 0011 0011 0011 001

故23位的尾数为

0111 1011 0011 0011 0011 001

指数为4 加上偏移量127 为131 对应 1000 0011


1


2


3


4


5


6


7


8


9


1

0


1

1


1

2


1

3


1

4


1

5


1

6


1

7


1

8


1

9


2

0


2

1


2

2


2

3


2

4


2

5


2

6


2

7


2

8


2

9


3

0


3

1


3

2


符号位


指数部分(含有偏移量127)


尾数部分


0


1


0


0


0


0


0


1


1


0


1


1


1


1


0


1


1


0


0


1


1


0


0


1


1


0


0


1


1


0


0


1


对应16进制数


4


1


B


D


9


9


9


9

对应的16进制为 41BD 9999

我用多路温度测试仪器 用485接口读取 触点1的温度, 当温度 显示 23.7时

我用串口监控器读取上来的数据为 01 04 04 41 BD 99 9A 95 A7 95 A7是MODBUS CRC16 的校验码。

当多路温度测温仪显示的温度为24摄氏度的时候,我用串口监控器读取的数据为

01 04 04 41 C0 00 00 EF 84 EF 84 为Modbus crc16 的校验码

现在开始 把IEEE-754 表示的数 翻译成十进制的小数

0100 0001 1100 0000 0000 0000 0000 0000

上面的绿色为指数部分 100 00011 对应十进制的131 减去偏移量127 等于 4

小数部分 加上省略的1 应该为

1.100 0000 0000 0000 0000

乘以指数4以后 变为

11000.0000 0000 0000

.0 摄氏度。

百度网盘

原文地址:https://www.cnblogs.com/bailongwei654321/p/12228425.html

时间: 2024-10-15 12:04:16

16路热电阻仪485通讯数据解析 帮高工解析的相关文章

117道有关大数据面试题的解析,希望对你有所帮助!

一 .简述如何安装配置apache 的一个开源的hadoop 使用root账户登陆 2.修改ip 3.修改host主机名 4.配置ssh 免密登陆 5.关闭防火墙 6.安装JDK 7.解压hadoop安装包 8.配置hadoop的核心配置文件 hadoop-env.sh? core-site.xml? mapred-site.xml yarn-site.xml hdfs-site.xml 9.配置hadoop 的环境变量 10 .格式化hadoop namenode-format 启动节点sta

数据解析1:XML解析(2)

上一篇着重记录了XML解析中的SAX解析,该篇继续上篇(数据解析1:XML解析(2))未讲完的内容. XML补充: 1. 2. . 3. 示例:使用SAX解析一个比较复杂的XML文件 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!-- START_DOCUMET:第一个节点 3 END_DOCUMET:尾节点 4 START_TAG:其他的首部的节点 p pn c cn... 5 END_TAG:其他的尾

iOS即时通讯之CocoaAsyncSocket源码解析四

原文 前言: 本文为CocoaAsyncSocket源码系列中第二篇:Read篇,将重点涉及该框架是如何利用缓冲区对数据进行读取.以及各种情况下的数据包处理,其中还包括普通的.和基于TLS的不同读取操作等等.注:由于该框架源码篇幅过大,且有大部分相对抽象的数据操作逻辑,尽管楼主竭力想要简单的去陈述相关内容,但是阅读起来仍会有一定的难度.如果不是诚心想学习IM相关知识,在这里就可以离场了... 注:文中涉及代码比较多,建议大家结合源码一起阅读比较容易能加深理解.这里有楼主标注好注释的源码,有需要的

用Qt写软件系列六:博客园客户端的设计与实现(用Fiddler抓包,用CURL提交数据,用htmlcxx解析HTML)

引言 博客园是本人每日必逛的一个IT社区.尽管博文以.net技术居多,但是相对于CSDN这种业务杂乱.体系庞大的平台,博客园的纯粹更得我青睐.之前在园子里也见过不少讲解为博客园编写客户端的博文.不过似乎都是移动端的技术为主.这篇博文开始讲讲如何在PC端编写一个博客园客户端程序.一方面是因为本人对于博客园的感情:另一方面也想用Qt写点什么东西出来.毕竟在实践中学习收效更快. 登录过程分析 登录功能是一个客户端程序比不可少的功能.在组装Http数据包发送请求之前,我们得看看整个登录是怎样一个过程.F

数据解析1:XML解析(1)

Http网络传输中的数据组织格式主要有三种: 1.HTML方式 2.XML方式 3.JSON方式 其中XML方式的数据解析有三种:DOM解析,SAX解析,Pull解析. 下面主要讲解SAX解析. 因为SAX解析是解析XML格式的数据的,那么首先要大致了解下什么是XML,以及XML数据有什么特点. 下面是一个XML数据文件: 分析:XML文件和HTML文件很相似,都是由标签构成,但是XML比HTML更灵活,XML被称为可扩展性标记语言.其中第一行的是固定的格式,文件主体全部有双标签构成,且标签是自

数据解析1:XML解析(3)

XML解析的第二种方法是PULL解析. PULL解析是以事件常量的的方法进行解析,何为事件常量? 当解析器从头到尾解析XML文件时,解析到文档开头定义为解析到一个常量XmlPullParser.START_DOCUMENT,当解析到开始标签定义为解析到一个常量XmlPullParser.START_TAG,当解析到结束标签定义为解析到一个常量XmlPullParser.END_TAG,当解析到文档结尾定义为解析到一个常量XmlPullParser.END_DOCUMENT. 下面是PULL解析的

Android学习之Json数据的获取与解析

Android获取json数据的原理,我的理解是:首先通过http协议获取json数据的字符串格式数据,然后再把字符串格式转变成Json对象的数据 首先我先将某个网址path的数据获取到: 1 /** 2 * HttpUtils.java [V 1.0.0] 3 * classes :com.oysd.json.HttpUtils 4 * ouyangshengduo create at 2015-6-24 5 */ 6 package com.oysd.json; 7 8 import jav

关于16路及以上的X86服务器架构

关于16路及以上的X86服务器架构 INTELX86架构的CPU,很少有16路以上的.HP之前有基于安腾(非X86架构) CPU的32路服务器,但是安腾架构的软件后来HP自己也不支持了.接着 华为.浪潮也在国家项目里 搞了 基于安腾的32路 服务器.由于INTEL ,HP 都放弃对安腾的支持,所以这国家项目也仅仅是技术的一些积累,很难在生态圈有很好的成长. 如今不一样了,随着至强CPU(X86)性能不断提升,HP凭借自身在芯片互联方面的技术能将原本只能组成2路的CPU变成16路或以上的,而且扩展

《淘宝数据魔方技术架构解析》----阅读

我们都知道淘宝,也都在使用淘宝.但让我们自己制作一个淘宝app很难,让我们想出关于淘宝的架构更难.最近阅读了<淘宝数据魔方技术架构解析>(https://mp.weixin.qq.com/s?__biz=MzAxNjAzMTQyMA==&mid=2648476063&idx=1&sn=882fb8584b82107d5af191af5b805d0e&chksm=83d3224cb4a4ab5a72e04dbaa6c6621cc866ab913bb7abb1aa8