我需要计算公式的定点值:
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
值。
如何以antilog()
格式向Q6.25
提供有意义的内容?
在这种特定情况下,我如何从一种格式转到另一种格式?
P.S。
如果divide
在没有缩放的情况下提供了无法容纳Q6.25
的非常大的输出,会发生什么?在这种情况下,如何做e^(scale*Q6.25)
?
答案 0 :(得分:0)
&#34;位23 ... 0小数部分(当移位时,这实际上是Q0.31格式&lt;&lt; 8&#34;
好吧,关键是你不要移动8,而是移动指数部分(位31..24)。请注意,指数几乎肯定有偏差;位00000000不是指数<<0
,但可能是>>127
左右。 (检查文件)。
SO,减去偏差,减去Q6.25的另外6,然后换班。