Chapter Fifteen

第15話



大きな整数の足し算のVIはどうだったろうか? たかが足し算で、あの調子だから先が思いやられると思った人もいるだろう。

だが、引き算は補数の考え方を使えば楽勝だ。引く数のビットを反転して、1を加えることにより補数を求め、その補数を引かれる数に加えればよい。
ダイアグラムの下の方でU32n表現で1を作っているが、入力と同じ大きさで値が0のU32の配列を作り、最も大きな要素番号の要素を1に入れ換えている。この面倒くささがたまらない(?)。

かけ算は、何と説明して良いかわからないからまずVIを見てもらおう。
最近は電卓で済ますことが多いから、10進数のかけ算を手計算で計算する方法を忘れてしまった人もいるかもしれない! 2進数のかけ算はそれより簡単だ。なにしろ九九を唱える必要がないんだから。インゼロガ ゼロ、インイチガ イチ、このふたつだけ。

U32n;Aを2倍の桁に延長しよう(U32n;A’と呼ぶ)。オリジナルのU32n;Aは下半分(LSB側)の部分に入れる。筆算の要領でU32n;A’の一番下の桁とU32n;Bをかけて(U32n;A’の一番下の桁が0だったら何もしない。1だったら、U32n;Bそのもの。)、U32n;A’の上半分に足し算する。U32n;A’を1ビットだけ右シフトする。
これの繰り返しだ。
以上の簡単な説明が有ればダイアグラムは理解できるレベルではないだろうか?

わり算は、割る数を繰り返し引いて引きすぎたら加え戻して引き算の数を商とすればよい、と書いて有る本があった。これではいかにも時間がかかりそうだから不採用としよう。

目下、高速化に向けてLV4のプロファイル機能を駆使して検討中だ。LV3で作ってLV4でプロファイルを調べて、またLV3で改良する、という煩雑な手順をとらなければならないのは困ったことだが、気軽にバージョンアップをできるのは限られた人なのだから、できるだけLV3でも使えるようにしよう。

See you!

Nigel Yamaguchi

戻る