[トップ][編集][ノート][編集履歴][一覧][最近の更新][->English]

ビットシフト


  1. 0bxxxxxxxxxxxxのxxxxxxxxxxxxは2進数であることを表す
  2. 2進数において 1bit ずらすと 1桁変わる
解釈 結果
1 << 1 1(0b000000000001) から 1bit 左にずらす
(2進数で1桁繰り上げる)
2
(0b000000000010)
2 >> 1 2(0b000000000010) から 1bit 右にずらす
(2進数で1桁繰り下げる)
1
(0b000000000001)
1 << 5 1(0b000000000001) から 5bit 左にずらす
(2進数で5桁繰り上げる)
32
(0b000000100000)
5 >> 1 5(0b000000000101) から 1bit 右にずらす
(2進数で1桁繰り下げる)
2
(0b000000000010)
1 << 10 1(0b000000000001) から 10bit 左にずらす
(2進数で10桁繰り上げる)
1024
(0b010000000000)
10 >> 1 10(0b000000001010) から 1bit 右にずらす
(2進数で1桁繰り下げる)
5
(0b000000000101)
  • 2進数
    ↓10進数 2048 1024 512 256 128 64 32 16 8 4 2 1
    1 0 0 0 0 0 0 0 0 0 0 0 1
    2 0 0 0 0 0 0 0 0 0 0 1 0
    3 0 0 0 0 0 0 0 0 0 0 1 1
    4 0 0 0 0 0 0 0 0 0 1 0 0
    • 「0」と「1」の並びのところが2進数をあらわしています。
    • 3 は 2+1 ということです。
  • 「<<」

    10進数 ビットシフト 2048 1024 512 256 128 64 32 16 8 4 2 1
    1*(2の0乗) 1 1 0 0 0 0 0 0 0 0 0 0 0 1
    1*(2の1乗) 2 1<<1 0 0 0 0 0 0 0 0 0 0 1 0
    1*(2の2乗) 4 1<<2 0 0 0 0 0 0 0 0 0 1 0 0
    1*(2の3乗) 8 1<<3 0 0 0 0 0 0 0 0 1 0 0 0
    1*(2の4乗) 16 1<<4 0 0 0 0 0 0 0 1 0 0 0 0
  • 「>>」

    10進数 ビットシフト 2048 1024 512 256 128 64 32 16 8 4 2 1
    32*(2の0乗) 32 32 0 0 0 0 0 0 1 0 0 0 0 0
    32*(2の-1乗) 16 32>>1 0 0 0 0 0 0 0 1 0 0 0 0
    32*(2の-2乗) 8 32>>2 0 0 0 0 0 0 0 0 1 0 0 0