乗算や除算を使わずにBCD変換する

乗算や除算を使わずにBCD変換するプログラムを考えてみた。

引数の数値範囲に限定してあらかじめ計算しておいた結果をテーブル参照することで実行時には加算のみですむようになっている。全ての数値を単純に参照変換するよりもメモリ量は圧倒的に少なくてすむ。

10の剰余を求めたいときは(計算結果 & 0x0F)するだけで良い。

さて、このプログラムは乗算や除算を使っていないと言えるだろうか?

参考にした計算式: n + 6 * (n / 10);