●概要 補数方式ではないので、負数があると面倒な処理が必要となる。全て絶対値演算になり、符号は別途調整される。加算といえど、減算になる場合もある。 ●全体 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(0) が 0 でなければ、全体として桁上がりがあったので、C() を右に一つシフトし、指数調整値を +1 にする。C(0) を除去する。加算なので、これ以上頭に 0 要素はない。後ろの、0 要素 を除去する。有効な桁数を数える。 ○符号 符号を設定する。 |