【发布时间】:2018-01-22 15:36:36
【问题描述】:
所以我有一个 32 位处理器,我可以用 C 语言编程它需要与定点一起使用以提高速度。
我了解定点表示和基本实现。我正在寻找的是如何组合具有不同小数位数的数字。
假设我将 Q10 + Q10 相加,我将使用 Q10 作为总和。如果我将 Q10 和 Q20 相加会怎样?算法是否考虑了这两个数字并选择适当的 Qx 值以最小化精度损失和溢出?我基本上需要加减乘除。
问题是我的操作可能看起来像:
2*3.14159*50*1e-4*10 + 5.2*10
而且我宁愿避免“手动”进行缩放和技巧。
【问题讨论】:
-
你如何代表 Q10?
-
如果您使用具有可变比例的定点表示,那么手动缩放正是您所注册的。即使使用不变的比例,您可能仍然需要为乘法运算进行一些手动缩放。当然,您可以将其包装在一个函数中,但这可能首先会失去定点所提供的任何性能优势。根据您的具体需要,也许宏是避免代码重复的合适工具。
-
十进制位是矛盾的。
标签: c fixed-point