1

我有一个使用 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 位)。当我尝试将其转换为浮点数时,将尾数部分除以精度位并用精度位减去指数部分,它真的不起作用。请帮助提出更好的方法。

4

2 回答 2

2

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

定点一般是指整数部分固定位数,小数部分固定位数。根据您的描述,我猜您有 1 位整数和 23 位小数;因此您对 1.0 的表示是 0x80000。转换系数为 1.0/0x80000。

double conversionFactor = 1.0 / 0x80000;
floating = fixed * conversionFactor;
于 2010-04-18T05:17:50.887 回答
1

如果您的定点数有 23 位小数,

f = n * (1.0 / 0x800000)
于 2010-04-18T05:21:28.200 回答