自然数 A は必ず次のような形に展開することができます。 これを 「 2進法展開 」 と言うことにします。

Aを2で割った余りは
です。Aを2で割った商は次のようになります。

上記の数を2で割った余りは
です。上記の数を2で割った商は次のようになります。

上記の数を2で割った余りは
です。上記の数を2で割った商は次のようになります。

この原理を使えば10進数を2進数に変更するプログラムを組むことは容易にできます。 ただ、 順番に取り出した余りを表示するときに逆向きに表示するようにするのがやっかいですが ・ ・ ・ 。
さて、 「 自然数 A に 有理数
をかける 」 という演算は
で表され、 それは次のように変形することができます。
したがって、 「
ならば
を参加させ、
ならば
を参加させない。」 という約束に従った結果は、 総計
になります。次の十進BASIC のプログラムは、 2つの自然数の掛け算の結果を表すものです。 掛け算のプログラムには、 普通かけられる数をかける数の数だけ加えるというアルゴリズムが用いられますが、 このプログラムは、 かけられる数を2進法展開したものにある数をかけるというアルゴリズムが採用されています。
このプログラムは、 掛けられたい自然数に有理数を入力するといけませんが、 掛けたい自然数に有理数を入力しても間違わずに掛け算をしてくれます。
三重大教育学部の奥村晴彦教授は、 著書 「 C言語最新アルゴリズム辞典 」 に記載されているソースコードをネット上で公開されています。 またその一部を 山中和義 / 電脳遊戯団 さんが十進BASIC に翻訳されてネット上に公開されています。 上記のプログラムはそれを利用させていただきました。
十進