ITパスポート 2010年 秋期 問68
問題文
任意の8ビットのデータXと、8ビットのデータをビットごとに排他的論理和をとった結果はどれか。ここで、各1ビットのデータAとデータBの排他的論理和をとった結果Cの値は次のように表される。また、データの左方を上位、右方を下位と呼ぶ。

選択肢
ア:Xの上位4ビットすべての0, 1が反転し、下位4ビットはすべて1になる。
イ:Xの上位4ビットすべての0, 1が反転し、下位4ビットはそのまま残る。
ウ:Xの上位4ビットはすべて0で、下位4ビットすべての0, 1が反転する。
エ:Xの上位4ビットはそのままで、下位4ビットすべての0, 1が反転する。(正解)
🔒 解説は解答すると表示されます
任意の8ビットデータXと00001111の排他的論理和はどれか【ITパスポート 解説】
正解の理由
理由を一言で言うと、排他的論理和(XOR:Exclusive OR)は「対応するビットが1なら反転(0↔1)、0ならそのまま残る」性質を持つからです。ここで与えられたマスクは
00001111 なので、上位4ビット(左側)は0、下位4ビット(右側)は1です。したがって上位4ビットは変化せず、そのまま残り、下位4ビットだけが反転します。用語補足(初出):
- ビット(bit):情報の最小単位。0か1のどちらかを表す。
- 排他的論理和(XOR):2つのビットを比較して、異なれば1、同じなら0を返す論理演算。
- 上位(左方)/下位(右方):バイナリ表記で左がより大きな重みを持つ(上位)、右が小さな重み(下位)。
解法ステップ
- XOR の真理値表を確認する(問題文にも示されています)。
- 0 XOR 0 = 0、0 XOR 1 = 1、1 XOR 0 = 1、1 XOR 1 = 0
- 結論:XOR は「0 と XOR すると変わらない(保持)、1 と XOR すると反転する(0↔1)」
- マスク
00001111をビットごとに X に適用する。マスクの各ビットが0なら対応する X のビットはそのまま、1なら反転する。 - マスクを見ると上位4ビットが0、下位4ビットが1なので、上位4ビットはそのまま、下位4ビットはすべて反転する。これが選択肢エの説明と一致する。
簡単な例:
- X = とすると、下位4ビットは 。反転すると 。
- 結果は (上位4ビット は変化なし、下位4ビットは反転)。
プログラム例(参考):
X = 0b10110010
mask = 0b00001111
result = X ^ mask
print(bin(result)) # -> 0b10111101
選択肢別の誤答解説
-
ア: 「Xの上位4ビットすべての0, 1が反転し、下位4ビットはすべて1になる。」
誤りです。マスクの下位4ビットは1なので下位が反転するはずで、「下位がすべて1になる」とは限りません(反転結果は元の下位ビット次第)。また上位が反転するのはマスク上位が1のときです。ここでは上位は0なので反転しません。 -
イ: 「Xの上位4ビットすべての0, 1が反転し、下位4ビットはそのまま残る。」
誤りです。説明がアと逆で、マスク00001111は上位を0、下位を1にしているため、実際は上位がそのまま、下位が反転します。イはマスクが11110000の場合に該当する説明です。 -
ウ: 「Xの上位4ビットはすべて0で、下位4ビットすべての0, 1が反転する。」
誤りです。これはマスクの効果と X の値を混同しています。XOR はマスクの1で反転、0で保持するので「上位がすべて0になる」わけではありません。上位はマスクが0なので X の上位ビットがそのまま残ります。 -
エ: 「Xの上位4ビットはそのままで、下位4ビットすべての0, 1が反転する。」
正しいです。マスク00001111の上位が0(保持)、下位が1(反転)という性質と一致します。
よくある誤解
- マスクの書き方で「左が上位、右が下位」を逆に考えてしまう。
- 問題文に「左方を上位、右方を下位」とあるので、まずはここを確認してください。上位=左、下位=右です。
- XOR を「常に反転する」と思う。
- XOR は「相手が1のとき反転、0のとき保持」です。マスクのビットを見ないで一律に反転するわけではありません。
補足コラム
- マスク(bit mask)とは、ビット演算で「どのビットに作用するか」を示す値です。ここでは
00001111がマスクになり、下位4ビットに作用します。 00001111は16進数で0x0F、10進数で15に相当します。よく使われる表現なので覚えておくと便利です。- XOR の用途例:フラグの反転(オン/オフの切り替え)、単純な暗号(ワンタイムパッド的操作)、パリティチェック(誤り検出)など。
FAQ
Q1. マスクが
A1. 全ビットが1なので、XOR によって X の全ビットが反転します(ビット反転=NOT と同等)。
11111111 ならどうなる?A1. 全ビットが1なので、XOR によって X の全ビットが反転します(ビット反転=NOT と同等)。
Q2. ビットを「強制的に1にする」にはどうする?
A2. OR(論理和)を使います。マスクのビットが1ならその位置を1にできます。逆に「強制的に0にする」には AND を使い、マスクの対応ビットを0にします。
A2. OR(論理和)を使います。マスクのビットが1ならその位置を1にできます。逆に「強制的に0にする」には AND を使い、マスクの対応ビットを0にします。
Q3. 上位・下位の言い換えが分かりにくいです。例を教えてください。
A3. 8ビット
A3. 8ビット
10110010 の場合、左から4つ 1011 が上位4ビット、右から4つ 0010 が下位4ビットです。関連キーワード: 排他的論理和、XOR、ビット演算、マスク、上位下位、バイナリ、0x0F、フラグ操作、ビット反転

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

