情况是我在32位嵌入式平台(Cortex-M4F)上有一个硬件FPU。我真的很想使用FPU,但该平台不提供64位浮点运算的硬件实现 - 任何64位操作都会触发硬故障。
但我还需要能够通过串口将几个关键的64位浮点数发送到PC。通过简单地复制IEEE 754浮点表示的组件,将float32升级到float64有一个很好的question here,所以这是我的起点。
但是,我真的希望能够使用int32累加器和float32小数组件之间的总和来填充此float64字段。我假设操作会起到以下作用:
这永远不会超出int32的范围,但我相信它的精度会比直线float32大得多,因为它会变大。
在我实施这个时,我应该注意哪些特殊问题?任何库或现有代码可能有助于编写和分解这些结构?谢谢!
答案 0 :(得分:0)
将32位浮点数转换为64位的比特纠缠是相对简单的。 (虽然我会担心字节顺序。)
向24/53位尾数添加32位整数是一个更有趣的问题...涉及对齐尾数和整数(整理整数的符号,转换为符号和幅度)进行舍入和保护位随机播放,根据需要进行标准化和舍入。您需要64位无符号整数运算,移位等才能方便地执行此操作。 [我写过软件浮点库......这很有趣,但很棘手。]。
我猜你不能改变PC端接受两个双打并在那里添加?更容易,接受浮点数和整数!