私はfx1.15表記をしています。基礎となる整数値は63183(レジスタ値)です。固定小数点fx表記と変換
今、ウィキペディアによれば、完全な長さは15ビットです。値は内側に収まらない、そう?
したがって、fx1.16の値であれば、それを人間が判読可能な値に変換するにはどうすればよいですか?
私はfx1.15表記をしています。基礎となる整数値は63183(レジスタ値)です。固定小数点fx表記と変換
今、ウィキペディアによれば、完全な長さは15ビットです。値は内側に収まらない、そう?
したがって、fx1.16の値であれば、それを人間が判読可能な値に変換するにはどうすればよいですか?
固定小数点値を人間が読める形式に変換するには、浮動小数点を小数点以下2桁で割ります。例えば、15の小数ビット、2^15 = 32768が存在する場合、あなたはこのような何か使用しますので:今、彼らは浮動小数点に固定小数点数を変換し、printf()
は高価な操作である呼び出し、および
int x = <fixed-point-value-in-1.15-format>
printf("x = %g\n", x/32768.0);
を通常は固定小数点を使用して得られたパフォーマンスを破壊します。私はあなたが診断目的のためだけにこれをやっていると推測します。
また、浮動小数点演算が禁止されているか、使用できないためにプラットフォームが固定小数点演算を行っている場合は、手動で10進変換を行う行に沿って別の処理を行う必要があります。基礎となる浮動小数点値に32768を掛けた整数をモデル化し、そこから移動します。便利な固定小数点コードhereがあります。
p.s.私はあなたがまだこの答えに興味があるかどうか確信していません、ashirk(私は他の人のためにそれを書いています)が、もしあなたなら、Stack Overflowへようこそ!
thx。良い説明。 – ashirk