2進数の四則演算 part2
2進数の四則演算 part2です。![]()
前回説明できなかった剰余算の説明です。
掛け算と割り算は、「シフト演算」という技?を使います。
シフトとは、「位置を移動する」つまり、ずらすという意味で解釈してください。
2進数において、シフトしてみます。
010(2進)を 左に1ビットずらすと
100(2進)となります。
10進で値を確認してみましょう。![]()
010(2進) → 2(10進) 、 100(2進) → 4(10進) ですね。
では、もっとずらしてみましょう。
010(2進)を 左に2ビットずらすと
1000(2進)となります。
10進で値を確認してみましょう。![]()
010(2進) → 2(10進) 、 1000(2進) → 8(10進) ですね。
【考察】
左に1ビットずらすと、元の値の2倍となります。
→010(2進) → 2(10進) を左に1ビットずらすと、 100(2進) → 4(10進)
→110(2進) → 6(10進) を左に1ビットずらすと 1100(2進) → 12(10進)
左に2ビットずらすと、元の値の4倍となります。
→010(2進) → 2(10進) を左に2ビットずらすと 1000(2進) → 8(10進)
→110(2進) → 6(10進) を左に2ビットずらすと 11000(2進) → 24(10進)
左に2ビットずらすと、元の値の8倍となります。
→010(2進) → 2(10進) を左に3ビットずらすと 10000(2進) → 16(10進)
→110(2進) → 6(10進) を左に3ビットずらすと 110000(2進) → 48(10進)
【応用】
じゃあ、3倍するにはどうすのか![]()
簡単です。![]()
左に1ビットして2倍になった値に、元の値を足せば、3倍になります。
010(2進) を左に1ビットずらす(2倍する) → 100(2進)
100(2進) にもとの値を加算する。 → 110(2進)
10進にして確認してみます。
010(2進) → 2(10進)
110(2進) → 6(10進)
2 × 3 = 6 で合ってますね。
【まとめ】
・左にずらすことで、2、4、8、16倍とすることができます。
・シフトした値に、加算することによって奇数の掛け算ができます。
割算は逆の考え方で、右にシフトさえればOKです。
ちなみに右シフトする割算は試験には出ません。
(^-^)/