ビット演算子とは
ビット演算子とは、数値を「2進数(0と1)」として扱い、それぞれの桁(ビット)ごとに計算を行う演算子です。
通常の計算(+ や -)は数値全体を扱いますが、ビット演算子は以下のように1桁ずつ処理します。
例:
5(10進数) = 0101(2進数)
3(10進数) = 0011(2進数)
このように変換して計算するのが特徴です。
主なビット演算子の種類
代表的なビット演算子を一覧で紹介します。
| 演算子 | 名称 | 説明 |
|---|---|---|
| & | AND(論理積) | 両方が1のときだけ1 |
| | | OR(論理和) | どちらかが1なら1 |
| ^ | XOR(排他的論理和) | 異なるときだけ1 |
| ~ | NOT(否定) | 0と1を反転 |
| << | 左シフト | ビットを左にずらす |
| >> | 右シフト | ビットを右にずらす |
各ビット演算子の仕組みと具体例
AND(&)
両方のビットが「1」の場合のみ「1」になります。
0101(5)
0011(3)
------
0001(1)
結果:1
OR(|)
どちらか一方でも「1」なら「1」になります。
0101(5)
0011(3)
------
0111(7)
結果:7
XOR(^)
ビットが異なる場合のみ「1」になります。
0101(5)
0011(3)
------
0110(6)
結果:6
NOT(~)
0と1を反転させます。
0101 → 1010
※実際のプログラムでは符号ビットの影響で結果が変わる点に注意が必要です。
シフト演算(<<, >>)
左シフト(<<)
ビットを左にずらし、空いた右側に0を入れます。
0001(1) << 2 → 0100(4)
→2倍ずつ増えるイメージ
右シフト(>>)
ビットを右にずらします。
0100(4) >> 2 → 0001(1)
→2で割るイメージ
ビット演算子のメリット
1. 処理が高速
ビット単位で処理するため、通常の計算より高速に動作します。
2. メモリ効率が良い
フラグ管理などを1つの数値でまとめて扱えます。
3. 低レイヤー処理に強い
OSや組み込み開発、ゲーム開発などでよく使われます。
ビット演算子の使用例
フラグ管理
複数の状態を1つの整数で管理できます。
例:
READ = 1 (001)
WRITE = 2 (010)
EXEC = 4 (100)
権限の組み合わせ:
READ | WRITE = 3(011)
チェック:
3 & 1 → 1(READあり)
初心者がつまずきやすいポイント
2進数に慣れていない
→ 最初は10進数との対応を意識すると理解しやすい
NOT演算の挙動
→ 符号付き整数の仕組み(2の補数)に注意
シフトの意味
→ 「×2」「÷2」と覚えると簡単
まとめ
ビット演算子は、一見難しそうに見えますが、以下のポイントを押さえれば理解できます。
- 0と1で計算する演算子
- 各ビットごとに処理する
- 高速・省メモリで効率的
特に「AND」「OR」「シフト演算」は実務でもよく使われるため、まずはこの3つから覚えるのがおすすめです。
こんな人におすすめ
- プログラミング初心者
- C言語やJava、Pythonを学んでいる人
- 処理速度や最適化に興味がある人


