ホーム ] PC技術/システム技術 ] VB.NETプログラミング ] なるほどナレッジ ] インフォメーション ]

上へ
加減算
乗算
除算

レガシー四則算

加減算

最終更新日:2006/03/20

●桁合せ

 加減算は、数値のオーバーロードに依らず、全て仮数部Integer配列どうしで演算される。このとき、小数点位置を合せるが、完全な固定小数点では効率が悪いので、 半固定状態の仮数部で演算する。このため、桁合せでは、指数部の大きい方を基準とし、小さい方がシフトダウンして小数点を合わせ、配列サイズも長い方に合わせる。

→シフトダウンは配列の移動と、除算にて実現する。シフトアップは配列の移動と乗算にて行う。


例:指数部の大きいAはそのままで、Bが3桁シフトダウンする

●符号による調整

 加減算は絶対値で行われ、符号によって、加算、減算の順序や、結果の符合を調整する。従って、加算であっても、実際には減算されることもある。減算は、必ず、大きい方から小さい方を引くように調整する。

●演算

 結果を入れる配列サイズは一つ余計にして置く。これは、加算時の最上位のキャリを保持するためである。

 仮数部の配列の最後尾から演算する。配列の要素どうしの加算または減算を以下のように繰り返す。

  • 加算:和がBase(100000000)を超えたら、キャリーを立て、上位の加算に反映する。
  • 減算:差が負になったら、上位からボローする。ボローは上位の減算に反映する。ここでは、最上位桁でボローは生じない。

●正規化

 加減算の結果は下図のようになる。黄色の部分が、追加された配列要素である。

 

 加減算の結果の配列

 正規化は、以下の手順で行う。加減算にて共通なので、一般化されている。

  1. 結果の小数点は、C1とC2の間にある。
  2. C0が、0の場合は、指数を不変にし、最上位要素を除去する。1以上のときは(減算ではあり得ない)、配列全体を一桁シフトダウンし、指数を+1にし、空になった最上位要素を除去する。
  3. 変更された結果配列の頭から、初めて1以上の値を持った桁を探す。その桁番号にて、指数を調整し、その桁を、最上位桁になるまでシフトアップする。
  4. 配列の後ろから、要素値が0のものを除去する。
  5. 頭から、有効な桁数を数える(全体の桁数から後ろの値が0の桁数を引いたもの)。