我需要计算公式的定点值:
e ^ ( Konst/x*y )
我使用第三方 divide()
和 antilog()
函数,类似于:
div = divide( Konst, x*y );
out = antilog( div );
我的 divide()
在输出时给出
bits 23…0 fractional part
(这实际上是 Q0.31
移动后的格式 << 8
)
和
bits 31…24 exponent
.
antilog()
期望输入 Q6.25
值(value)。
如何向 antilog()
提供有意义的内容?在 Q6.25
格式?
在这种特定情况下,我如何从一种格式转到另一种格式?
附注
如果 divide
会发生什么给出了一个非常大的输出,无法放入 Q6.25
没有缩放?那样的话,怎么办e^(scale*Q6.25)
?
最佳答案
“位 23…0 小数部分(这实际上是移位 << 8 时的 Q0.31 格式”
好吧,重点是你不是移动 8,而是移动指数部分(位 31..24)。请注意,指数几乎肯定是有偏差的;位 00000000 不是指数 <<0
但可能>>127
或者。 (检查文档)。
因此,减去偏差,为 Q6.25 再减去 6,然后移动。
关于c - 定点转换 : 31. ..24 指数与 23...0 小数到 Q25 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41955058/