Skip to the content.

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

まず結論

ビット演算は、ビット列を1桁ずつ見て、0と1を操作する計算です。

基本情報技術者試験では、AND、OR、XOR、NANDを次のように切り分けると分かりやすいです。

演算 試験での見方
AND(論理積) 特定のビットだけ残す
OR(論理和) 特定のビットを1にする
XOR(排他的論理和) 特定のビットを反転する
NAND(否定論理積) ANDの結果を反転する

特に、XORには次の性質があります。

A XOR B = C

A = B XOR C
B = A XOR C

つまり、3つのうち2つが分かれば、残り1つをXORで逆算できます。

残すならAND、1にするならOR、反転・逆算ならXOR。

直感的な説明

ANDは、ビット列にかぶせる 穴あきシート のようなものです。

例えば、8ビットのうち下位4ビットだけを見たいとします。

元のビット列:1010 0110
残したい範囲:0000 1111

ここで、0000 1111 とANDを取ります。

  1010 0110
AND 0000 1111
=   0000 0110

上位4ビットは 0 とANDするので消えます。

下位4ビットは 1 とANDするので元のまま残ります。

0 AND 何か = 0
1 AND 何か = 何かが残る

一方、XORは「反転スイッチ」のように考えられます。

0 と XOR
→ 元のまま

1 と XOR
→ 0と1が反転する

さらに、同じ値をもう一度XORすると、元に戻ります。

A XOR B XOR B = A

そのため、XORは反転だけでなく、不明な値を逆算するときにも使えます。

定義・仕組み

ビット演算では、2つのビットを対応する位置ごとに計算します。

まず、基本の真理値表を押さえます。

入力A 入力B AND OR XOR NAND
0 0 0 0 0 1
0 1 0 1 1 1
1 0 0 1 1 1
1 1 1 1 0 0

それぞれの意味は、次のように考えると覚えやすいです。

演算 直感
AND 両方1なら1 残す範囲を指定する
OR どちらか1なら1 指定した範囲を1にする
XOR 違えば1 指定した範囲を反転する、逆算する
NAND ANDの反対 AND結果を反転する

XORは同じ値を2回使うと元に戻る

XORでは、同じ値を2回XORすると、元の値に戻ります。

A XOR B XOR B = A

1ビットで見ると、次のようになります。

0 XOR 0 = 0
0 XOR 1 = 1

1 XOR 0 = 1
1 XOR 1 = 0

同じビットをもう一度XORすると、

0で2回
→ 変化しない

1で2回
→ 反転して、もう一度反転
→ 元に戻る

となります。

この性質から、

A XOR B = C

なら、

A = B XOR C
B = A XOR C

と逆算できます。

マスク処理

16進数 0F は、2進数では次のようになります。

0F = 0000 1111

16進数では、1桁が4ビットに対応します。

0 = 0000
F = 1111

そのため、0F は「上位4ビットは0、下位4ビットは1」というビット列です。

同じ考え方で、FF は8ビットすべてが1です。

FF = 1111 1111

このテーマは、基本情報技術者試験の「基礎理論」や「情報に関する理論」と関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。

科目Aでどう出る?

科目Aでは、ビット列と論理演算を使って、結果のビット列や不明な値を選ぶ問題が出題されます。

判断するときは、何をしたい操作なのかを先に見ます。

問題文の目的 使う演算
特定のビットだけ残したい AND
特定のビットを0にしたい AND
特定のビットを1にしたい OR
特定のビットを反転したい XOR
XORの入力やかぎを逆算したい XOR
ANDの結果を反転したい NAND

特定のビットを残す

元の値を 1101 0101 とします。

0F0000 1111 です。

ANDを取ると、次のようになります。

  1101 0101
AND 0000 1111
=   0000 0101

下位4ビットの 0101 は、そのまま残っています。

全ビットを反転する

8ビットすべてを反転したい場合は、FF とXORを取ります。

FF = 1111 1111

元の値を 1010 1010 とすると、次のようになります。

  1010 1010
XOR 1111 1111
=   0101 0101

XORで不明な値を逆算する

次の式を考えます。

入力 XOR かぎ = 出力

不明なのが「かぎ」なら、

かぎ = 入力 XOR 出力

です。

例として、

1100 XOR かぎ = 0010

なら、

かぎ
= 1100 XOR 0010
= 1110

となります。

複数のXORユニットを逆向きにたどる

XOR処理が直列につながっていても、出力側から順に逆算できます。

入力
↓ XOR かぎA
中間値1
↓ XOR かぎB
中間値2
↓ XOR かぎC
出力

最終出力と かぎC が分かれば、

中間値2 = 出力 XOR かぎC

です。

さらに、中間値1 が分かっていれば、

かぎB = 中間値1 XOR 中間値2

と求められます。

試験では、前から計算するだけでなく、出力から逆向きにたどることも意識します。

科目Bでどう使う?

科目Bでは、プログラムの条件判定やフラグ処理を読むときに、ビット演算の考え方が役立ちます。

例えば、あるビットだけを確認したい場合は、ANDを使います。

値 AND マスク

フラグを立てたいときはORを使います。

値 OR マスク

指定したビットを反転したいときはXORを使います。

値 XOR マスク

また、XORは簡単な暗号化と復号の考え方にも使われます。

平文 XOR かぎ = 暗号文
暗号文 XOR かぎ = 平文

同じかぎをもう一度XORすると元に戻るためです。

科目Bでは、次の対応を覚えておくと読みやすくなります。

取り出す・残す
→ AND

立てる・1にする
→ OR

反転する・元に戻す・逆算する
→ XOR

よくある誤解・混同

XORは同じなら1

誤りです。

XORは、2つのビットが異なるときに1になります。

0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0

XORの式は逆算できない

誤りです。

A XOR B = C

なら、

A = B XOR C
B = A XOR C

と求められます。

XORで不明な値を求めるときは、分かっている2つをXORする。

FFとORでも全ビットを反転できる

できません。

FF とORを取ると、結果はすべて1になります。

FF と OR
→ 全ビットを1にする

FF と XOR
→ 全ビットを反転する

0FとのANDは下位4ビットを消す

逆です。

0F = 0000 1111

なので、

上位4ビット
→ 0で消える

下位4ビット
→ 1で残る

となります。

XORを普通の足し算として考える

XORは数値の加算ではありません。

対応するビットを1桁ずつ比較し、異なるときに1を出します。

まとめ(試験直前用)

  • ANDは、両方1のときだけ1になる
  • ORは、どちらか1なら1になる
  • XORは、2つのビットが異なるとき1になる
  • NANDは、ANDの結果を反転する
  • 特定のビットだけ残すときはANDを使う
  • 特定のビットを1にするときはORを使う
  • 特定のビットを反転するときはXORを使う
  • A XOR B = C なら、不明な値は残りの2つのXORで求める
  • 同じ値を2回XORすると元に戻る
  • 複数のXOR処理は、出力側から逆向きにたどれる

残すならAND、1にするならOR、反転・逆算ならXOR。

© 2024-2026 stemtazoo. All rights reserved.