|
●概要 補数方式ではないので、負数があると面倒な処理が必要となる。全て絶対値演算になり、符号は別途調整される。減算といえど、加算になる場合もある。 ●全体 C = A - B なる演算では、
●演算前処理 ○符号検査
○符号と大小関係 a、b をそれぞれの絶対値とすれば、下表のようになる。
○桁合せ/配列合せ 指数部が異なる場合は、一時的に指数部の小さい方を非正規化状態にし、指数を大きい方に合せる。移動桁数は差分となる。例えば、 1.2345(10) - 5.67(8) では、指数がことなるので、小さい方を差分 2 だけ、右シフトする。つまり、0.0567(10) にする。これにて、 1.2345(10) - 0.0567(10) は、仮数部の単純減算で行える。 また、両者の配列数が異なる場合は、大きい方に合せておく。 ●演算 ○減算 減算は到って簡単である。配列の要素同士をInteger として以下のように減算する。 Integer配列 A() - B() → C() なる減算 Dim i, L As Integer 必ず大きい方から引くので、全体としてのボローはないが、正規化処理の共通化のために、C() は頭に余計な要素が追加されいる。従って、C() = 0 である。 ●後処理 ○正規化 C(0)は、無条件に除去。減算の場合は、先頭要素が 0 になることがあるので、先頭の 0 要素を除去する。除去した数*(-8) を指数補正値とする。後ろの 0 要素を除去する。全体として 0 になることもある。有効桁数を数える。 ○符号 符号を設定する。
|