カテゴリ: C++ 更新日: 2026/02/21

C++のビット演算子を完全解説!初心者でもわかる & | ^ ~ << >> の使い方

ビット演算子 (&, |, ^, ~, <<, >>)
ビット演算子 (&, |, ^, ~, <<, >>)

先生と生徒の会話形式で理解しよう

生徒

「C++の本を読んでいたら、見たことのない記号がたくさん出てきました。これは何をしているんですか?」

先生

「それはビット演算子といって、数字をとても細かい単位で操作するための演算子です」

生徒

「数字を細かく操作するって、どういう意味ですか?」

先生

「数字を二進数という形にして、一桁ずつ判断するイメージです。順番に説明しますね」

1. ビット演算子とは?

1. ビット演算子とは?
1. ビット演算子とは?

C++のビット演算子は、数値をそのまま計算するのではなく、 数値の中身を一つ一つのビット単位で扱うための演算子です。 ビットとは、コンピュータが扱う最小の情報の単位で、 ゼロかイチのどちらかの状態しか持ちません。 普段私たちが見ている数字も、 コンピュータの中ではビットの集まりとして保存されています。 ビット演算子を使うことで、 その内部構造を直接操作できるようになります。

2. ビット演算の前に知っておきたい二進数

2. ビット演算の前に知っておきたい二進数
2. ビット演算の前に知っておきたい二進数

ビット演算子を理解するためには、 二進数という考え方を知っておく必要があります。 二進数は、ゼロとイチだけで数を表す方法です。 例えば、十進数の五は、 二進数では一〇一と表されます。 これは、スイッチがオンかオフかで数を表していると考えると、 初心者でもイメージしやすくなります。

3. AND演算子「&」の仕組み

3. AND演算子「&」の仕組み
3. AND演算子「&」の仕組み

ビット演算子の「&」は、 二つの数値をビットごとに比べ、 両方がイチのときだけイチになります。 どちらか一方でもゼロなら、 結果はゼロになります。 共通している部分だけを取り出す、 という感覚で覚えると理解しやすいです。


int a = 6;   // 二進数では 110
int b = 3;   // 二進数では 011

int result = a & b;
std::cout << result << std::endl;

2

4. OR演算子「|」とXOR演算子「^」

4. OR演算子「|」とXOR演算子「^」
4. OR演算子「|」とXOR演算子「^」

「|」は、どちらか一方でもイチであれば、 結果がイチになります。 一方で「^」は、二つが違うときだけイチになります。 同じならゼロになるのが特徴です。 条件の違いを見つけたいときに、 XOR演算子は役立ちます。


int x = 5;   // 101
int y = 3;   // 011

std::cout << (x | y) << std::endl;
std::cout << (x ^ y) << std::endl;

7
6

5. NOT演算子「~」でビットを反転する

5. NOT演算子「~」でビットを反転する
5. NOT演算子「~」でビットを反転する

「~」は、すべてのビットを反対にします。 イチはゼロに、 ゼロはイチに変わります。 数字が大きく変わるため、 初心者は驚きやすい演算子です。 内部のビットが反転している、 という点を意識すると理解しやすくなります。


int num = 1;
int result = ~num;

std::cout << result << std::endl;

-2

6. ビットを動かすシフト演算子「<<」「>>」

6. ビットを動かすシフト演算子「<<」「>>」
6. ビットを動かすシフト演算子「<<」「>>」

シフト演算子は、 ビットを左右にずらす演算子です。 「<<」は左に移動し、 「>>」は右に移動します。 左にずらすと数は大きくなり、 右にずらすと数は小さくなります。 桁を移動させている、 という感覚で覚えると理解しやすいです。


int value = 2;

std::cout << (value << 1) << std::endl;
std::cout << (value >> 1) << std::endl;

4
1

7. ビット演算子が使われる場面

7. ビット演算子が使われる場面
7. ビット演算子が使われる場面

ビット演算子は、 設定の管理や状態の判定など、 複数の情報を一つの数値で扱う場面で使われます。 見た目は難しく感じますが、 仕組み自体はとても単純です。 ビット単位で考えることで、 コンピュータがどのように情報を扱っているかを、 実感できるようになります。

8. 初心者がつまずきやすいポイント

8. 初心者がつまずきやすいポイント
8. 初心者がつまずきやすいポイント

ビット演算子は、 普段の計算と考え方が違うため、 最初は混乱しやすい分野です。 まずは二進数のイメージと、 各演算子の役割を理解することが大切です。 数字ではなく、 ビットの並びを操作している、 という意識を持つと、 少しずつ理解が深まっていきます。

カテゴリの一覧へ
新着記事
New1
C言語
C言語のデバッグ環境を整える【GDB入門】初心者でもエラーの原因がわかる!
New2
C++
C++のヘッダファイルとソースファイル分割構成の完全ガイド!初心者でも理解できる
New3
C++
C++の可変長引数を完全解説!初心者でもわかる関数の引数を増やす方法
New4
C言語
C言語のCI/CD導入ガイド!GitHub Actionsで自動ビルドする方法
人気記事
No.1
Java&Spring記事人気No1
C言語
C言語を学ぶ初心者におすすめの環境構築手順【2025年版】
No.2
Java&Spring記事人気No2
C言語
Visual Studio CodeでC言語を実行する方法【拡張機能の設定と実行手順】
No.3
Java&Spring記事人気No3
C言語
LinuxでC言語開発環境を構築する方法【GCCとMakefileの基本】
No.4
Java&Spring記事人気No4
C言語
C言語開発でよく使われるエディタとIDEランキング【初心者向け完全ガイド】
No.5
Java&Spring記事人気No5
C言語
C言語のソースコードとヘッダファイルの役割とは?初心者向けにわかりやすく解説!
No.6
Java&Spring記事人気No6
C言語
C言語の配列と文字列の基本を完全ガイド!初心者でもわかる宣言と使い方
No.7
Java&Spring記事人気No7
C++
MinGWとMSYS2でWindowsにC++環境を構築する方法を徹底解説!初心者でもできるセットアップガイド
No.8
Java&Spring記事人気No8
C++
Makefileの基本構文とターゲット定義を初心者向けに解説