ビット演算とは
ビット演算子を使えば2進数のビット単位での演算ができます。
簡単に言えば論理演算子を1ビット単位で考えたものです。
ビット演算子一覧
名称 | 構文 | 意味 | 優先順位 | 結合規則 |
左シフト演算子 | a << b | 左にビットシフト | 6 | → |
右シフト演算子 | a >> b | 左にビットシフト | 6 | → |
左シフト代入演算子 | a <<= b | 左にビットシフトして代入 | 15 | ← |
右シフト代入演算子 | a >>= b | 右にビットシフトして代入 | 15 | ← |
ビット積演算子 | a & b | ビット単位のaかつb | 9 | → |
ビット和演算子 | a | b | ビット単位のaもしくはb | 10 | → |
ビット否定演算子 | ~a | ビット単位のaでない | 2 | ← |
ビット排他的論理和演算子 | a ^ b | 同じなら0違うなら1 | 11 | → |
ビット積代入演算子 | a &= b | ビット積を代入 | 15 | ← |
ビット和代入演算子 | a |= b | ビット和を代入 | 15 | ← |
ビット排他的論理和代入演算子 | a ^= b | ビット排他的論理和を代入 | 15 | ← |
ビットシフト
ビットシフトとはデータのビット列を左右にずらすことです。
01100010
という8桁の2進数を左に1ビットシフトすると
11000100
となります。
左に1つ分ずらし、足りない部分に0をいれ、あまった部分は切り捨てます。
左に1つずらすということはもと数に2を掛けた値になります。
これは10進数で考えるとわかりやすいでしょう。
0123
という10進数の数を左に1つずらすと
1230
でもとの数の10倍になります。
右シフトも同様に1つずらすごとに1/2倍されていきます。
これを使うことで掛け算、割り算を表現することができます。
詳しくはこちらでまとめています。