定点转换:31 ... 24指数,23 ... 0小数到Q25值?

时间:2017-01-31 10:23:23

标签: c signal-processing fixed-point

我需要计算公式的定点值:

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)

1 个答案:

答案 0 :(得分:0)

&#34;位23 ... 0小数部分(当移位时,这实际上是Q0.31格式&lt;&lt; 8&#34; 好吧,关键是你不要移动8,而是移动指数部分(位31..24)。请注意,指数几乎肯定有偏差;位00000000不是指数<<0,但可能是>>127左右。 (检查文件)。

SO,减去偏差,减去Q6.25的另外6,然后换班。