1

fx1.15表記があります。基になる整数値は63183(レジスタ値)です。

現在、ウィキペディアによると、完全な長さは15ビットです。値が中に収まりませんよね?

それで、それがfx1.16値であると仮定すると、それを人間が読める値に変換するにはどうすればよいですか?

4

1 に答える 1

1

固定小数点値を人間が読める形式に変換するには、浮動小数点を2で小数ビット数に除算します。たとえば、小数ビットが15個ある場合、2 ^ 15 = 32768なので、次のように使用します。

int x = <fixed-point-value-in-1.15-format>
printf("x = %g\n", x / 32768.0);

現在、固定小数点数を浮動小数点に変換して呼び出すことprintf()はコストのかかる操作であり、通常、固定小数点を使用することで得られるパフォーマンスはすべて破壊されます。これは診断目的でのみ行っていると思います。

また、浮動小数点演算が禁止されているか利用できないためにプラットフォームが固定小数点を実行している場合は、手動で10進変換を実行するのと同じように別のことを実行する必要があることに注意してください。整数を、基になる浮動小数点値に32768を掛けたものとしてモデル化し、そこから実行します。ここにいくつかの便利な固定小数点コードがあります

psあなたがまだこの答えに興味があるかどうかはわかりませんが、ashirk(私は他の人のためにもっと書いています)が、もしそうなら、Stack Overflowへようこそ!

于 2012-04-03T06:50:54.577 に答える