シフト演算と2進数の掛け算割り算

シフト演算:2進数をあらわすビット列を左もしくは右にずらす操作

論理シフト

符号を慮せずに行うシフト操作。最上位のビットも含めてシフトさせるという考え方。

  • 左論理シフト:元の数値の 2n倍したもの
  • 右論理シフト:元の数値の1/2n倍したもの

算術シフト

符号を考慮して行うシフト演算。先頭のビットを符号として固定にし、それ以降のビットだけ左右にずらす

  • 左論理シフト:元の数値の 2n倍したもの。空スペースには0
  • 右論理シフト:元の数値の1/2n倍したもの。空スペースには符号

掛け算・割り算

掛け算

  • 書ける数を2nにあたる数字に分解
  • それぞれの桁で掛けて、合算

A × 7 = A × (4+2+1)
A × 7 = A × (2の2乗+2の1乗+2の0乗)
A × 7 = A×2の2乗+A×2の1乗+A×2の0乗

割り算

  • 割る数を2進数に直す
  • 元の数字から割りたい数で何回引けるのか?で計算する

15÷3=1111÷11
元の数字を超えない範囲で割る数を左にシフトして、引く … 1111-1100=11
同様に余りを割りたい数で引いてやる…11-11=0

引くことができた数は…

2ビットシフト+0ビットシフト=4+1=5

タイトルとURLをコピーしました