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 ビット) にスケーリングします。float に変換しようとしたところ、仮数部を精度ビットで割り、指数部を精度ビットで減算すると、どうしてもうまくいきません。それを行うためのより良い方法を提案するのを手伝ってください。

4

2 に答える 2

2

変換係数を計算して掛けるだけです。固定小数点システムで 1.0 を表す値は? 1.0/それを掛けると、変換が得られます。

固定小数点は一般に、整数部分の固定ビット数と小数部分の固定ビット数を指します。あなたの説明から、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 に答える