Microchip
直播中

沈会笛

7年用户 309经验值
私信 关注
[问答]

怎么将int转换为不带库的float?

我需要把数字转换成IEEE 754和IEEE 754。我不需要做任何浮点数学。数字是十进制定点(即100存储为1000)是否有人知道一个可用的代码来进行转换?我懒惰,不想写和调试它,如果我不需要。仅仅因为这个而引入浮点库似乎是一种浪费。

回帖(4)

贾绰

2020-4-1 10:24:11
根据您迄今为止所写的内容,我猜:1)您的代码有一个整数,需要通过Xfloat=.t/10.02将其转换为浮点。除了在某些数据流中将其作为二进制结果转储之外,您不打算对浮点做任何事情。在代码中设置nt math,这样就不会引入浮点数学库。Google显示“使用union和c中的struct将浮点数转换为IEEE754表示。”athttps://gist.github.com/khajavi/5667960。这提供了一个Union来解压缩单精度IEEE754格式,但是,您必须认识到字段是以一种特殊的方式打包的。例如,尾数表示一个二进制点分数,其中隐含的整数位总是一个。
举报

李天竹

2020-4-1 10:31:48
不难做到。浮点格式是二进制的,不是十进制的,所以您需要先除以10,这很容易通过乘以一个系数(比如乘以1024*0.1=102)来完成。然后您继续向左移动,直到位24变为一,对每个移位调整一个指数。然后你清除24位并将指数打包成23位。你可以从任何浮点仿真库窃取代码。你不需要整个图书馆。
举报

陈晨

2020-4-1 10:44:22
米夏埃尔.沃尔什很喜欢。好的,我想把数字保持在小数点后面。所以我需要调整指数。(我希望)我会检查XC32和XC8库。我认为XC8有很多C代码。
举报

罗玉婧

2020-4-1 10:50:01
你使用MZ EF吗?您可以运行一个小的汇编语言片段来将整数输入FPU寄存器,然后调用cvt.s.w或cvt.d.w来获得浮点值,然后将它们复制出来。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分