コンテンツ
紹介ポイント
固定小数点数と浮動小数点数は以前のブログで紹介されています。詳細については、次のリンクにアクセスしてください。
固定小数点の利点
固定小数点表現を使用する利点は何ですか?すべての値を整数範囲に単純に正規化し、整数を処理してみませんか?すべての値を整数に正規化すると、非常に読みにくいコードとドキュメントが生成されます。不動点は、コードを見るときに便利なことがよくあります。たとえば、次のようなソースコードを見ている場合:
c0 = fixbv(0.0032, min=-1, max=1, res=2**-15)
c1 = fixbv(-0.012, min=-1, max=1, res=2**-15)
これをフィルターの係数に関連付けるのは簡単ですが、整数しか表示されない場合は次のようになります。
c0 = intbv(0x0069, min=-2**15, max=2**15)
c1 = intbv(-0x0189, min=-2**15, max=2**15)
他の情報を見る必要があります。整数だけでは、これらの値が何を表すのかを理解するのが難しくなります。
表示の利点に加えて、丸めやオーバーフローの状況を処理するために使用される場合、固定小数点データでも一般的です。
固定小数点数の乗算と加算
固定小数点数の乗算演算と通常の10進数の乗算は、非常によく似た方法で使用できます。列の計算です。固定小数点数の加算についても同じことが言えます。
乗算
固定小数点数の乗算を計算する場合、数値が2進数に変換される限り、小数点の存在は一時的に無視できます。これは、前述のように、固定小数点数が固定小数点数と呼ばれる理由です。ポイント番号は、小数点位置が固定されているためです。したがって、最初に計算を実行してから、小数点の位置を決定できます。
以下は、2つの数値を6.5625(3つの整数部分を含む合計8桁、小数点以下4桁)および4.25(5つの整数部分を含む合計8桁、小数点以下2桁を含む)とする2つの数値の例です。 。
0110.1001 == 6.5625
000100.01 == 4.25
01101001
x 00010001
------------
01101001
00000000
00000000
00000000
01101001
00000000
00000000
00000000
--------------------
x000011011111001 == 0000011011.111001 == 27.890625
製品の結果に必要な桁数は、2つの数値の桁数の合計です。多くの場合、乗算と加算の結果はサイズが変更され、ビット数が減少します。固定小数点では、小数点以下の桁数が小さいほど破棄され、破棄されたビットに応じて値が丸められるため、これは直感的に理解できます。このようにして、データのビット幅を減らすことができ、ビット幅を減らす効果を達成することができる。
添加
加算を行う前に小数点を揃える必要があるため、加算はもう少し複雑です。乗算の例と同じ値を使用します:
0110.1001 == 6.5625
000100.01 == 4.25
0110.1001
+ 000100.01
-------------
001010.1101 == 10.8125