ホーム ] 関係演算方式 ] 四則演算方式 ]

上へ
加算
減算
乗算
除算

四則演算方式

除算

最終更新日:2007/04/26 新規

●概要

 配列 / 配列、配列 / Base の二通りの除算がある。配列 / Base の除算は速い。演算は絶対値で行い、符号は別途調整される。指数部は減算で求められる。

●方法

 いずれの除算も、商は、指定された精度(桁数)まで求める必要があるので、Base/Base であっても、例えばDoubleによる除算は使用できない。

○前処理

  1. 除数が Zero なら Overflow、双方が Zero なら NaN。
  2. 非除数が Zero ならZero。
  3. 同符号なら Positive、異符号なら Negative。
  4. 除数が、10n であれば、指数演算のみで終了。
  5. 取りあえずの指数は、非除数 - 除数 とする。
  6. 除数がBase 未満かどうかを検査。以下に続く。演算は、絶対値として行う。

○配列 / Base

 仮数部同士の除算なので、最初の整数商は、0 〜 9 となる。従って、小数点は、二つ目の結果配列の直前にある。 結果の桁数は、別途設定された精度で決まる。割切れない場合は、精度桁まで求める。

A() が非除数の配列
B が除数Integer
C() が結果の配列。サイスは、精度/8

Dim i, ac, V As Integer
Dim R, CD As Long
ac = A.Length
CD = 0
For i = 0 To m_NumSize - 1   '精度/8 まで
   If i < ac Then                
      V = A(i)
   Else                             '非除数配列がなくなったら 0 とする
      V = 0
   End If
   R = V + CD * Base         '割るべき数
   C(i) = R \ B                  '整数商
   CD = R Mod B               '剰余(キャリーダウンとなる)
   If R = 0 Then Exit For     '被除数がなくなっても終了
Next

配列 / 配列

 この除算では、ネイティブな除算命令は使用できなく、引き算とシフトで行う。バイナリーではないので、本来のシフト命令ではなく、10進の乗除算で行う。被除数から除数を何回引けるかを演算することになるので、時間が掛かる。部分商は10進1桁となる。

○正規化

 この除算結果は、加減算と同じなので、加減算と同じ正規化を行う。