我有一个浮点代码,其中一些变量的范围为1.0e-12到7.89e-20(非常小的浮点数)。
我需要将浮点代码转换为32位定点。如何解决这些变量的Q格式?
很明显,如果我将这些值转换为32位固定点,它将为零。
(int)(1.0e-12 x 2^31) = 0 in Q1.31
还要乘法,对这些变量执行加法运算。
我的代码处理的是极低的振幅信号,这就是可变范围如此之小的原因。
我没有确切的信息来源,但在我读过的地方,要表示较小的浮点数,请使用整数格式的伪浮点。
就像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
以上方法可以解决我的问题吗?我将如何在这个压缩数字中进行乘法或加法运算?