我有一个使用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位)。当我尝试将它转换为浮点数时,通过将尾数部分除以精度位并用精度位减去指数部分,它确实' 工作。 请帮助建议一种更好的方法。
答案 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)