0

我有一个浮点代码,其中一些变量的范围 = 1.0e-12 到 7.89e-20 (非常小的浮点数)。

我需要将浮点代码转换为 32 位定点。如何修复这些变量的 Q 格式?

显然,如果我将这些值转换为 32 位定点,它将为零。

(int)(1.0e-12 x 2^31) = 0 in Q1.31

此外,对这些变量执行乘法、加法。

我的代码处理非常低端的幅度信号,这就是可变范围如此之小的原因。

有什么方法可以在 32 位定点中表示像上面这样非常小的值?

我没有确切的信息来源,但我在某处读到,为了表示较小的浮点数,使用整数格式的伪浮点数。

就像,在 32 位整数变量中:用 8 位表示指数,用 24 位表示尾数。

(int)(1.0e-12 x 2^31 x 2^25) = 72057 in Q1.31

exponent = 25 and mantissa = 72057
packing this inside 32-bit integer = 0x19011979
First 8 bits = 0x19 = 25
Rest 24 bits = 0x011979 = 72057

上述方法能解决我的问题吗?我将如何在这个打包的数字中进行乘法或加法?

4

0 回答 0