更新日:2003/9/1
乗算の原理を確認するために、例によってExcelシートで確認した。
Kanbayashi氏からの乗算方法のプログラムを参考にさせて頂き、次のように考えた。
加減算の場合と同様に配列a、bに整数が入っているとする。c=a×bを計算する。
たとえば、b(1)×a(1)を計算した場合、加算の場合と異なり、繰り上がりは、1とは限らない。
上位への繰り上がりは、この積を10^kで割った商となる。c(1)は、余りとなる。
また、加算の場合と異なり、b(2)についてもa(1)からとかけ算を行う必要があり、
前回の結果と1桁ずらして足しあげるなど複雑になる。
Excelシートで確認しておくと便利である。Excelシートでは、kは、最大4までとなる。
その骨子は、次のようになる。ここで、配列dは、作業用である。
なお、na、nbは、それぞれの配列の要素数。
c、dは、na、nbの最大値の(2倍+1)桁数分を確保している。このあたり、Kanbayashi氏のプログラムでは、無駄な領域を取らない工夫をされているようであるが、ここでは簡単さを優先した。。
For i = 1 To nb
agari = 0
For j = 1 To na
work = (a(j) * b(i) + agari) \ 10 ^ k
d(j) = (a(j) * b(i) + agari) Mod 10 ^ k
agari = work
Next j
d(na + 1) = agari
agari = 0
For j = 1 To na + 1
work = c(j + i - 1) + d(j) + agari
If work >= 10 ^ k Then
c(j + i - 1) = work - 10 ^ k
agari = 1
Else
c(j + i - 1) = work
agari = 0
End If
d(j) = 0
Next j
Next i
このExcelブックは、「自作もの」にアップした。
基本的には、Excelの場合と同様であるが、計算途中で値がInteger宣言の範囲を超える場合がある。
そこですべて変数は、Longで宣言している。これも無駄な部分があるが、とりあえずk=8までエラーが起きないようである。
マイナス符号については、加減算の場合と同様に場合に分けて考慮してある。(符号はマイナス符号のみ)
乗算の原理を確認するためのExcelブックを自作ものに追加した。
名称は、TabaichoZyozanExcel.LZHである。
加減算までのものと同一の名称で加減乗算が可能になったものをアップした。
TabaichoKagenzyozyo.LZHである。