Skip to the content.

最終更新日:2026年7月23日

まず結論

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

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

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

特に、下位4ビットだけを残すなら、0F とのANDを使います。

0F = 0000 1111

また、8ビットすべてを反転するなら、全ビットが1の FF とXORを取ります。

FF = 1111 1111

直感的な説明

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

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

元のビット列:1010 0110
残したい範囲:____ 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 → 反転する

そのため、反転したい位置を 1 にしたマスクと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結果を反転する

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
ANDの結果を反転したい NAND

例えば、8ビットの下位4ビットを変化させたくない場合を考えます。

元のビット列を、ここでは 1101 0101 とします。

0F0000 1111 です。

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

  1101 0101
AND 0000 1111
=   0000 0101

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

一方で、OR、XOR、NANDでは、下位4ビットが変化する場合があります。

演算 結果 下位4ビット
AND 0000 0101 元のまま
OR 1101 1111 1になる
XOR 1101 1010 反転する
NAND 1111 1010 反転側になる

したがって、下位4ビットをそのまま残すという目的なら、ANDが適切です。

全ビットを反転する

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

FF = 1111 1111

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

  1010 1010
XOR 1111 1111
=   0101 0101

各ビットについて、0 XOR 1 = 11 XOR 1 = 0 となるため、0と1がすべて入れ替わります。

8ビットすべてを反転
→ FF と XOR

16ビットすべてを反転
→ FFFF と XOR

ビット数に合わせて、全ビットが1になる値を使うのがポイントです。

科目Bでどう使う?

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

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

値 AND マスク

マスクとは、確認したいビットを 1、無視したいビットを 0 にしたビット列です。

確認したいビット → 1
無視したいビット → 0

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

値 OR マスク

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

値 XOR マスク

科目Bでは、コードを細かく暗記するよりも、次の対応を覚えておくと読みやすくなります。

取り出す・残す → AND
立てる・1にする → OR
反転する → XOR

よくある誤解・混同

ビット演算でよくある誤解は、AND、OR、XORをすべて「何かを比較する演算」として同じように見てしまうことです。

誤解 正しい理解
ANDは両方の値を足す ANDは両方1のときだけ1
ORは常に元の値を残す ORは1と演算したビットを1にする
XORは同じなら1 XORは異なるときだけ1
NANDはORと同じ NANDはANDの結果を反転したもの
0F は下位4ビットを消す 0F とのANDは下位4ビットを残す
FF とのORで全ビットを反転できる ORは全ビットを1にし、XORは全ビットを反転する

特に、0F の意味をつかむことが大切です。

0F = 0000 1111

このビット列とANDを取ると、

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

になります。

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

できません。

FF とORを取ると、元のビットが0でも1でも結果は1になります。

0 OR 1 = 1
1 OR 1 = 1

したがって、結果は常に 1111 1111 です。

一方、FF とXORを取ると、各ビットが反転します。

0 XOR 1 = 1
1 XOR 1 = 0

切り分けは次のとおりです。

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

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

試験では、次のように切り分けると迷いにくいです。

残したい → 1 と AND
消したい → 0 と AND
1にしたい → 1 と OR
反転したい → 1 と XOR

まとめ(試験直前用)

  • ANDは、両方1のときだけ1になる
  • ORは、どちらか1なら1になる
  • XORは、2つのビットが異なるとき1になる
  • NANDは、ANDの結果を反転する
  • 特定のビットだけ残すときはANDを使う
  • 0F = 0000 1111 なので、0FとのANDは下位4ビットを残す
  • 8ビットすべてを反転するときは、FF とXORを取る
  • FF とのORは全ビットを1にし、FF とのXORは全ビットを反転する
  • 「残す・1にする・反転する」で選択肢を切る

© 2024-2026 stemtazoo. All rights reserved.