最近のCPUは,これら乗除算のハードウェアーが実装されており,それに対応する機械語 命令がある.しかし,単純なCOMET IIには,そのハードウェアはなく,当然機械語命令も 無い.そのため,ソフトウェアーでその仕組みを実現させなくてはならない.詳細につい ては,後で学習するが,ちょっとだけ方法を示す.興味深い方法である.
 を計算する場合,
を計算する場合, のように必要な回数だけ足し合わせて
乗算を行う.このように算術加算を用いて乗算を行うことができる.ただし,この方法は
もっとも原始的で効率の悪い方法である.人間がこの計算を行うのは非現実的であるが,
単純作業を非常に高速で行うコンピューター向きの方法である.
のように必要な回数だけ足し合わせて
乗算を行う.このように算術加算を用いて乗算を行うことができる.ただし,この方法は
もっとも原始的で効率の悪い方法である.人間がこの計算を行うのは非現実的であるが,
単純作業を非常に高速で行うコンピューター向きの方法である.
この例でもわかるように加算ができれば,乗算はできるのである.
 を計算する場合,筆
算は
を計算する場合,筆
算は
 と分解したはずである.そうして,次の
手順でこの除算を行ったはずである.
と分解したはずである.そうして,次の
手順でこの除算を行ったはずである.
 を計算し,1桁ずらす(10倍する).
を計算し,1桁ずらす(10倍する).
 を計算する.
を計算する.
 の計算結果である.
の計算結果である.
同じことを2進数で行う.これがコンピューターによる乗算である.先ほどと
同じ計算(
 )を行う.これを2進数で表現すると,
)を行う.これを2進数で表現すると,
|  | 
 を4桁左
      にずらす(ビットシフト).すると,
を4桁左
      にずらす(ビットシフト).すると,
 となる.
となる.
 を3桁左にずらす.すると,
を3桁左にずらす.すると,
 となる.
となる.
 となる.これは,10進
      数の816である.
となる.これは,10進
      数の816である.
 の計算は10からから3を引いていきます.そして,負になったら計算は完了です.
すると,商と余りが分かります.算術減算を用いて乗除算が出来ます.この例でもわかる
ように減算ができれば,除算はできるのである.
この方法は効率が悪いので,もう少しましな方法を考える.小学生の時に学習した筆算の
アルゴリズムを適用すれば効率は良くなる.計算は次のようにする.計算の準備として,
10と3を2進数で表す.
の計算は10からから3を引いていきます.そして,負になったら計算は完了です.
すると,商と余りが分かります.算術減算を用いて乗除算が出来ます.この例でもわかる
ように減算ができれば,除算はできるのである.
この方法は効率が悪いので,もう少しましな方法を考える.小学生の時に学習した筆算の
アルゴリズムを適用すれば効率は良くなる.計算は次のようにする.計算の準備として,
10と3を2進数で表す.
|  | 
次に示すように計算すれば,計算効率は上がるであろう.計算順序は,筆算での割り算と 同じである.
 から
から を減算したいが,負になるのでそれは不可とする.
を減算したいが,負になるのでそれは不可とする.
 から
から を減算したいが,これも負になるので不可とす
      る.
を減算したいが,これも負になるので不可とす
      る.
 から
から を減算する.それは可能で,結果は
を減算する.それは可能で,結果は で,
      その桁に
で,
      その桁に が立つ.
が立つ.
 は減算可能である.減算の
      結果は
は減算可能である.減算の
      結果は で,その桁に
で,その桁に が立つ.
が立つ.
 余
      りは
余
      りは
 となる.
となる.
 になっている場合である.ただ,
先ほどの筆算のアルゴリズムでもビットシフトは使ってはいる.
になっている場合である.ただ,
先ほどの筆算のアルゴリズムでもビットシフトは使ってはいる.