固定点算法的浮点转换

时间:2010-04-18 05:12:31

标签: floating-point fixed-point

我有一个使用24位定点计算的应用程序。我将它移植到支持浮点的硬件上,因此对于速度优化,我需要将所有基于固定点的计算转换为基于浮点的计算。

对于此代码段,它正在计算尾数

for(i=0;i<8207;i++)
{
  // Do n^8/7 calculation and store 
  // it in mantissa and exponent, scaled to 
  // fixed point precision.

}

因此,自此计算以来,将整数转换为尾数,并将指数缩放为定点精度(23位)。当我尝试将它转换为浮点数时,通过将尾数部分除以精度位并用精度位减去指数部分,它确实' 工作。 请帮助建议一种更好的方法。

2 个答案:

答案 0 :(得分:2)

只需计算转换因子并乘以它即可。在您的定点系统中,什么值代表1.0?乘以1.0 /那就可以获得转换。

固定点通常是指整数部分的固定位数,以及小数部分的固定位数。根据你的描述,我猜你有1位整数和23位分数;因此,1.0的表示形式为0x80000。转换因子为1.0 / 0x80000。

double conversionFactor = 1.0 / 0x80000;
floating = fixed * conversionFactor;

答案 1 :(得分:1)

如果你的定点数有23位分数,

f = n * (1.0 / 0x800000)