ITパスポート家庭教師のつぶやき -94ページ目

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です。


ちなみに右シフトする割算は試験には出ません。


(^-^)/