Webサイト工事中です! 閲覧できますが不具合があるかもしれません

ビットシフト(ビット演算子)に関する覚書

覚書です。

 

ビット演算子(<<や>>みたいなやつ)って何に使うのだろう。

→ 掛け算、割り算の代わりに使えます。

ある数xを2倍にする時x = x * 2とすると思いますが、これはx = x << 1と描いても同じ結果が得られます。

同様に
x = x << 1 : 2倍 (x = x * 2)
x = x << 2 : 4倍 (x = x * 4)
x = x << 3 : 8倍 (x = x * 8)
x = x << 4 : 16倍 (x = x * 16)
x = x << 5 : 32倍 (x = x * 32)

割り算なら逆に
x = x >> 1 : 1/2 (x = x / 2)
x = x >> 2 : 1/4 (x = x / 4)
x = x >> 3 : 1/8 (x = x / 8)
x = x >> 4 : 1/16 (x = x / 16)
x = x >> 5 : 1/32 (x = x / 32)

ビット演算子を使用する方が普通に掛け算をするよりも演算速度が速いそうです。

 

 

おまけの解説

0000 0001
と8ビットの2進数があった時、現状では10進数に変換すると1です。ここで1ビット左にシフトしてみましょう

0000 0010
1ビット左にずれました、10進数に変換すると2になりました。
続いて2ビットさらに左へシフトしてみましょう

0000 1000
10進数にすると8です。 覚書で描いた通り2つシフトしたら4倍になりましたね。

同様に逆の右へシフトしていけば、半分ずつ減っていくことがわかりますね。

ちなみに溢れた分は失われます。

 

0000 1010
10進数での10を例にしてやってみます。4ビット左へずらしてみましょう

1010 0000
10進数で16倍の160になりました。ここで5ビット右へシフトしましょう

0000 0101
10進数で5になります。

 

新版 明解C++ 中級編 (明解シリーズ)

新版 明解C++ 中級編 (明解シリーズ)

柴田 望洋
Amazonの情報を掲載しています
動かしながら学ぶRXマイコン活用法 (Tech Iシリーズ)

動かしながら学ぶRXマイコン活用法 (Tech Iシリーズ)

5,780円(11/21 17:42時点)
Amazonの情報を掲載しています

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

SESSIONS や Tokyo Demo Fest 等のイベントを主催してる人
各種最適化やIT・インフラ・3DCGが好き
◆YouTube: http://youtube.com/@FL1NE_
◆X(Twitter): @FL1NE

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次