gpt4 book ai didi

c++ - 如何获得浮点类型 C/C++ 的细节

转载 作者:行者123 更新时间:2023-11-28 02:15:36 30 4
gpt4 key购买 nike

我正在为几个文档很少的 MCU 开发一个程序。到目前为止,最紧迫的问题是我必须让所有这些 MCU 不断地通信(发送/接收) float 据,而且我不知道浮点类型的具体规范是什么。换句话说,如果我将一个浮点类型通过串行/并行连接发送到另一个 MCU,我无法确保它具有相同的值。我所看到的每个地方都没有给我关于他们如何处理它们的细节(精度、尾数、符号位的位置等...)

我找到了标准定点整数类型,例如 intlong;这明确适用于浮点类型,如 floatdouble

最糟糕的是,我无法访问每个 MCU 的标准库。这意味着我无法使用 std::numeric_limits 或其他类似的东西。

作为最后的手段,我可​​以创建自己的 structclass 或其他类型,并使用一些适当的逻辑运算符让每个数据类型执行操作我想要,但这对我的项目来说最终是不可取的。对于每个 MCU 的每个浮点类型的位结构的试错也是如此。

那么,是否有可能不仅看到浮点类型的细节,而且如果它们不符合标准也可能改变它们?或者,就像“您需要获得更好的 MCU”一样简单?

编辑#1:

我最近测试了我的 12 个 MCU,其中只有 5 个支持单精度和 double 的 IEEE 标准。其他七个都使用独特的单精度和 double 格式。

编辑#2:

按照建议,我运行了 Simon Byrne 建议的 Kahan 的 Paranoia 测试脚本:

You could try running Kahan's paranoia test script, which is available in several different languages from Netlib. This tries to figure out the floating point characteristics by test computations.

效果很好 对于我的两个 MCU。其余五个没有足够的内存来运行测试。然而,我设法解码的两个在处理符号位和字节顺序方面有非常奇怪的方式,我将不得不研究一些奇怪的逻辑操作,以便制作一个万无一失的兼容层。

最佳答案

您可以尝试运行 Kahan 的偏执狂测试脚本,该脚本有多种不同的语言版本,可从 Netlib 获取。 .这是试图通过测试计算来弄清楚浮点特性。

关于c++ - 如何获得浮点类型 C/C++ 的细节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34137197/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com