2進数の掛け算を理解するには前提知識が必要になります。論理シフトをまだ勉強されていない方はリンクの記事からご確認ください。
論理シフトを利用すれば基数の重みで掛け算も可能なことは前述の記事でも試しました。2進数を左に2桁論理シフトすれば2^2倍即ち4倍になるということですね。10進数であれば10を100にすれば(左に1桁論理シフトしている)10倍になっていると言えます。ただ基数以外の数値と掛け算したい場合はどうするのでしょうか?
2進数掛け算のやり方
例えば9倍にしたいとしましょう。2進数をAとすると以下の式になりますね。
A x 9
これはこうも置き換えられます。
A x (4 + 4 + 1)
さらに置き換えてみると
A x (2^2 + 2^2 + 2^0)
すると
(A x 2^2)+(A x 2^1)+ A
ここで2^2は左に2ビットシフトすることで表現できることを思い出してください。なんだかいけそうな気がしてきましたね。
具体的に試算
具体的に計算してみます。10進数の5を8ビットの2進数で表すと00000101ですね。これを9倍してみます。前述の式に当てはめると以下のような式ができますね。
(00000101 x 2^2)+(00000101 x 2^2)+00000101
まずは(00000101 x 2^2)なので左に2ビットずらします。
00010100になります。すると以下の式が成り立ちますね。
00010100 + 00010100 + 00000101 = 00101101
見事45になりました。
2進数の掛け算はこのようにしてコンピュータの中で計算されているんですね。
コメントを残す