hang up的意思:IEEE标准的32位浮点数转换为十进制的计算方法

来源:百度文库 编辑:偶看新闻 时间:2024/04/25 20:06:19

IEEE标准的32位浮点数转换为十进制的计算方法

技术分类: 通信  | 2008-11-03 
作者:weitongguo: EDN China

  EDN博客精华文章  作者:weitongguo

  工作中碰到的一个小问题,经过了一番研究,终于搞明白了,为了以后大家不再挠头,写了这个供大家参考。其中涉及到MODTEST 软件 MODBUS协议 IEEE32位二进制浮点数与十进制小数转换的方法等内容。

  IEEE标准的32位浮点数转换为十进制的计算方法

  下面是用笔记本电脑的MODTEST软件在COM 1口经232转485转换器转变为485口后连接到流量计算机,通过MODBUS协议读取到的流量计内部数据,下面通过分析,解释了如何把十六进制转换为十进制的计算过程。即下面记录里面的十六进制数据转换为左上角显示的十进制数据。

点击看原图

  流量计计算机通过485端口以MODBUS协议把内部IEEE32位浮点数传送到DCS的数据

  经过研究试验,其数据格式如下

  数据请求依次为:十六进制

  从站地址:01;读命令:03;数据起始高位地址:0F;数据起始低位地址:A0;(0FA0=4000即地址44001);数据长度高位:00;数据长度低位:28;(0028=40即40个地址);CRC效验码:46,E2

  数据应答格式:

  从站地址:01;读命令反馈:03;数据长度:50;第一个地址:69;C0;48;A9;第二个地址:C5;00;48;A2;以下类推,直到最后两位CRC:E8;86

  第一个地址:69;C0;48;A9是如何换算为346958的呢?

  流量计发送的是IEEE标准的32位浮点数

  首先要把69;C0;48;A9进行高低16位交换变成:48;A9;69;C0

  变为32位二进制数:01001000  10101001  01101001  11000000

  其中最高位为0,代表是正数

  接下来的八位:10010001变成十进制是145,根据IEEE规范应减去127得18,这是小数点右移的位数;

  剩下的23位是纯二进制小数即:0.0101001  01101001  11000000

  加1后得1.0101001  01101001  11000000

  小数点右移18位后得10101001  01101001  110.00000

  变为十进制得346958

  其它地址的32位浮点数计算方法同上

2.将十进制数16.25转换成IEEE754标准32位浮点数的标准格式来存储。 0的标准IEEE浮点表示方法 怎么将IEEE单精度数代码转换为十进制 假设一个规格化的32位浮点数如下11000001100101100000000000000000该数的十进制数值是多少怎么算出来的呢 将27/64表示成IEEE754标准的32位浮点规格化数 求助.请给一个16位十六进制数转换为20位十进制数的函数.谢谢. 二进制与十进制数的转换问题。如:159转换为二进制是多少?二进制1101001转换为十进制数是多少? VB中浮点数与IEEE形式转换? 关于"十进制数"转换为"非十进制数"的题目. 在线等!十六进制转换为十进制数的方法? 什么是二进制?如何将十进制的数转换为二进制? 十进制数转换二进制数的汇编程序 求教浮点数是怎样转换为内存里的十六进制数的呀。 把十进制数175.71875转换为相应的二进制数,怎么计算的? 二进制怎么转换成十进制的数? 请问能给我一个十六进制数转换为十进制数的函数吗?(VC) 计算题:把十进制的32转换成二进制数(用8位二进制数表示)和十六进制数表示。谢谢! 最大的 10 位无符号二进制整数转换成十进制数是 浮点数的问题 浮点数的组成 (1111)2的等值十进制数为 把十进制数的75转换成二进制数 十六进制数2B转换成十进制数的过程? 字长为6位的二进制无符号整数,其最大值是十进制数是什么