Skip to the content.

最終更新日:2026年8月30日

まず結論

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 = X
  • X XOR 1 = 反転
  • マスクが1の位置だけ反転したいときはXOR
  • 8ビット全反転では FF = 1111 1111 とXORをとる
  • ANDは必要なビットを取り出す
  • ORは必要なビットを1にする
  • XORは必要なビットを反転する
AND → 取り出す
OR  → 1にする
XOR → 反転する

© 2024-2026 stemtazoo. All rights reserved.