IEEE754浮点数的转换方法
今天在处理Modbus协议的数据时,碰到IEEE754浮点数的转换,几经周折,终于找到了方法进行解决,现总结出IEEE754浮点数的转换方法。
预备知识:
16进制浮点数的表示方法,根据IEEE的标准,分为32位和64位两种,参数分别如下:
符号位 指数位 尾数位 指数偏移量
32位1[31] 8[23-30] 23[0-22]127
64位 1[63] 11[52-62]52[0-51]1023
说明:
1位符号位(SIGN)
8位指数位(EXPONENT)
23位尾数位(MANTISSA)
其中,32位二进制数的排位为:[31][30][29]...[2][1][0]
16进制转换为10进制的公式如下:
SGL = (-1)^SIGN * 1.MANTISSA * 2^(EXPONENT-127)
举例:
将0x40800000转换为10进制数,方法如下:
(1)先将16进制数转成二进制数01000000100000000000000000000000
(2)1位符号位(SIGN)=0
(3)8位指数位(EXPONENT)=10000001=129[10进制]
(4)23位尾数位(MANTISSA)=00000000000000000000000
(5)1.尾数=1.1 .00000000000000000000000=1.0000000[10进制]
(6)套入公式得SGL=(-1)^0*1.0000000*2^(129-127)=4
其它相关资源:
IEEE浮点数转换小程序(可将16进制浮点数转10进制,也可将10进制转16进制)
网页上的转换工具
同时,使用JAVA作开发的朋友,也可以通过方法:intBitsToFloat进行浮点数转换
分享到:
相关推荐
Modbus IEEE754 浮点数 转换 方法 VB 代码 使用VB6把MODBUS协议中的32位整数,变换为浮点数 MODBUS协议 数据 转换 IEEE754 Float Long
c# IEEE754浮点数转换,已通过测试。实现浮点数与整型字节的相互转换,用于MODBUS协议的开发。
自己用Qt5.4.1的Qt Creator开发的IEEE754浮点数与十六进制数转换器,可以供Qt初学者学习槽函数的用法,也可以学习IEEE754浮点数与十六进制数转换的算法。两个文本框关联,实时将浮点数与十六进制数互相转换,代码...
[Java]IEEE754浮点数的转换方法,方法都写好了,直接复制过去就可以用了,就这么简单!
学习计算机组成原理时实现的IEEE754标准的浮点数的机器数转换器,只要填入十进制浮点数值,便可以求出单精度的IEEE754标准的机器数表示方法,反之,给出IEEE754的机器数,可以求出其对应的十进制浮点数值
32位浮点数转换十六进制数,一个四字节十六进制数可按四种顺序转换成32位浮点数,方便串口通讯时的数据正误预判。
IEEE754浮点数和十六进制数的相互转换,非常好。有利于初学者学习
IEEE754浮点数,转换位十进制、二进制、字符串
labview IEE754浮点数转换程序,通过串口采集到的十六进制字符串转换成单精度的浮点数,浮点数转换成十六进制字符串
根据IEEE754协议手动编程,源代码无加密,请放心下载 2012以上版本
IEEE754 浮点数计算器 。。。。。。。。。。。。。。。。。。。。。。。
Public Function MODBUSFloattoLong32(inputS As Single) As String 'IEEE754标准 浮点格式转换 我看网上介绍需要把整数部分和小数部分分开转成二进制,太复杂了,其实有非常简单的方法,看程序就知道了。相互学习。
labview IEEE754标准 32位浮点数转换
根据IEEE754浮点数与十进制数互相转换原理编写,可以实现数据转换验证。
本程序使用C#实现,使用的模板为“控制台应用... 本程序的功能是将IEEE754的32位浮点数转换为与其相对应的比特流字符串。 本程序的目的是为了完成一个编译器中需要将一个浮点数翻译为32位二进制的存储形式的子功能。
因为要做一个MODBUS通讯的项目,在通讯要将仪表发来的数据转换成浮点数,又要将浮点数转换为 IEEE754的二进制表式形式发出去。网上查了很多都是一大段一大段的,但我认为这个是最简单明了的。 希望对做类似项目的人...
4个字节的十六进制数填入软件最上面的文本框中,点击计算按钮显示最终结果
十进制浮点 to IEEE754浮点 & IBM浮点转换工具 可完成十进制单精度浮点数到IEEE754浮点数、IBM浮点数的转换。
C# IEEE754转换32位浮点数为10进制数 电力仪表RS485专用
浮点数用十六进制表示和十进制表示的相互转换