怎么把浮点值转换为4字节的16进制数? 10

比如1能转换为0000803F2能转换为0000004010是00002041是怎么换算出的?... 比如 1 能转换为00 00 80 3F 2能转换为 00 00 00 40 10是 00 00 20 41
是怎么换算出的?
展开
 我来答
lostinternet
2011-03-19 · TA获得超过316个赞
知道答主
回答量:203
采纳率:0%
帮助的人:283万
展开全部
我关于这个写了一篇论文.
在公司现有的产品通讯协议升级的过程中,涉及到了浮点数的传输。利用传统的做法就是将浮点数乘以一个整数倍数,将其放大到一定的精度再取整,将取整后的整数传输出去,到了目的地,再将整数除以相应的倍数,还原回真实值,这种方法虽然可以避免传输过程中浮数的操作,可是却给通讯双方带来了计算上的压力,将一个浮点数放大若干倍及缩小若干倍是需要进行乘除法运算的。而且标准的Modbus RTU协议也是允许传递浮点数操作的,因此,在通讯中使用浮点数是,最主要的是要注意浮点数在内存中的存储格式,这是通讯双方正确解析通讯数据的前提。IEEE委员会对浮点数的结构做了明确的规定,而且现在大多数的硬件厂商及编译器都采用了IEEE对浮点数的规定,IEEE规定了二进制浮点数可采用32位、64位及128位表示。对于我们公司所使用的研发的产品及对未来产品发展的预测,使用32位浮点数足以满足数据的大小及精度的要求,因此我们通讯协议中的浮点数采用32位二进制表示,根据IEEE的规定,32位浮点数表示为
(-1)s X be X m
其中
S为0或1
b为所使用的进制
e为一个整数且eMin<=e<=eMax
m被表示为下面一组数字形式的数值,d0.d1d2d3d4……dp-1(di是一个整数且0<=di<=b),因此 0<=m<b。
对于用32位二进制表示的浮点数,b的取值为2,eMin = 0,eMax = 127。例如-11的二进制表示为-1011,转换为上面的IEEE表示形式为
(-1)1 X (10)3 X (1.011),将IEEE表示形式编码为32位二进制数的表示形式为

其中e使用移码表示,
IEEE对浮点数规定相关内容参见《The IEEE Standard for Floating-Point Arithmetic》。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式