【固定小数点演算】固定小数点数の乗算と加算

コンテンツ

紹介ポイント

固定小数点の利点

固定小数点数の乗算と加算

乗算

添加


紹介ポイント

固定小数点数と浮動小数点数は以前のブログで紹介されています。詳細については、次のリンクにアクセスしてください。

【固定小数点・浮動小数点】固定小数点・浮動小数点数の説明

固定小数点の利点

固定小数点表現を使用する利点は何ですか?すべての値を整数範囲に単純に正規化し、整数を処理してみませんか?すべての値を整数に正規化すると、非常に読みにくいコードとドキュメントが生成されます。不動点は、コードを見るときに便利なことがよくあります。たとえば、次のようなソースコードを見ている場合:

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

おすすめ

転載: blog.csdn.net/m0_61298445/article/details/123884633