最終更新日:2026年8月30日
fe fe-technology logic bit-operation
まず結論
XOR(排他的論理和)を使うと、マスクが1の位置だけビットを反転できます。
基本情報技術者試験では、次の対応を覚えると判断しやすくなります。
AND → 必要なビットを取り出す
OR → 必要なビットを1にする
XOR → 必要なビットを反転する
特にXORでは、次の2つが重要です。
X XOR 0 → Xのまま
X XOR 1 → Xを反転
つまり、反転したい位置を1にしたマスクとXORをとれば、その位置だけ反転できます。
直感的な説明
たとえば、4ビットの値 1010 の下位2ビットだけ反転したいとします。
反転したい位置だけ1にしたマスクを用意します。
元の値 1010
マスク 0011
XORをとると、マスクが1の位置だけ反転します。
1010
XOR 0011
--------
1001
上位2ビットはマスクが0なのでそのまま、下位2ビットはマスクが1なので反転します。
このように、ビットマスクは「どの位置を操作するか」を指定するための型紙のようなものです。
定義・仕組み
XORの真理値表
XORは、2つの入力が異なるときだけ1になります。
| X | Y | X XOR Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
この表から、マスク側を0または1に固定して考えると性質が見えます。
0とのXOR
0 XOR 0 = 0
1 XOR 0 = 1
つまり、0とのXORでは元の値がそのまま残ります。
X XOR 0 = X
1とのXOR
0 XOR 1 = 1
1 XOR 1 = 0
つまり、1とのXORでは元の値が反転します。
X XOR 1 = 反転したX
全ビットを反転する
8ビットの値をすべて反転したい場合は、8ビットすべてが1のマスクを使います。
1111 1111
これは16進数では FF です。
例えば、
1010 1010
XOR 1111 1111
-------------
0101 0101
となります。
したがって、8ビット値の全ビット反転では、16進数FFとのXORが判断の合図です。
AND・OR・XORの役割
ビットマスクを使う問題では、3つの演算を役割で分けると迷いにくくなります。
| 演算 | マスク0の位置 | マスク1の位置 | 主な用途 |
|---|---|---|---|
| AND | 0になる | 元の値が残る | 必要なビットを取り出す |
| OR | 元の値が残る | 1になる | 必要なビットを1にする |
| XOR | 元の値が残る | 反転する | 必要なビットを反転する |
公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。
科目Aでどう出る?
科目Aでは、「このビット操作を実現するにはどの論理演算とマスクを使うか」という形で出題されます。
まず、問題文の目的を確認します。
特定のビットだけ残したい
→ AND
特定のビットを必ず1にしたい
→ OR
特定のビットを反転したい
→ XOR
次に、マスクの0と1がどう働くかを確認します。
XORの典型パターン
X XOR 00 → Xのまま
X XOR FF → 8ビットすべて反転
8ビットでは、
00 = 0000 0000
FF = 1111 1111
です。
そのため、8ビット全部を反転するなら、FF とXORをとります。
ORとの違い
ORで1を当てると、反転ではなく必ず1になります。
X OR 1 → 1
したがって、FF とORをとると結果は常に FF です。
X OR FF → FF
この違いは、XORとORを混同しないために重要です。
どんな場面で使う?
ビット操作は、複数の状態を1つの整数で管理するときなどに使われます。
例えば、各ビットに次のような意味を持たせる場合です。
bit0 → 設定A
bit1 → 設定B
bit2 → 設定C
bit3 → 設定D
このとき、
- ANDで特定の設定だけ確認する
- ORで特定の設定をONにする
- XORで特定の設定を反転する
といった操作ができます。
低レベルプログラミング、ハードウェア制御、フラグ管理などでよく使われる考え方です。
よくある誤解・混同
XORは「どちらかが1なら1」ではない
それはORです。
OR
1 OR 1 = 1
XOR
1 XOR 1 = 0
XORは、2つの値が異なるときだけ1です。
FFとXORなら常にFFになる
違います。
FFとのXORは、元のビットをすべて反転します。
1010 1010 XOR 1111 1111
→ 0101 0101
FFになるのは、ORの場合です。
X OR FF
→ FF
00とのXORで0になる
違います。
X XOR 0 = X
なので、00とのXORでは元の値がそのまま残ります。
XORとNOTは同じ
完全に同じではありません。
NOTは対象ビットをすべて反転する単項演算です。
一方、XORはマスクを使うことで、必要な位置だけ反転できるのが特徴です。
全ビット反転
→ NOT
必要な位置だけ反転
→ XOR+マスク
半加算器で使うXORとの違い
XORそのものの性質は同じです。
半加算器では、2つの入力が異なるときだけ1になる性質を使って、和のビットを求めます。
半加算器については、半加算器とは?AND・XORで和と桁上がりを求める仕組みで整理しています。
まとめ(試験直前用)
- XORは、2つのビットが異なるとき1になる
X XOR 0 = XX XOR 1 = 反転- マスクが1の位置だけ反転したいときはXOR
- 8ビット全反転では
FF = 1111 1111とXORをとる - ANDは必要なビットを取り出す
- ORは必要なビットを1にする
- XORは必要なビットを反転する
AND → 取り出す
OR → 1にする
XOR → 反転する