メインコンテンツへ
基礎理論

8ビットのバイト A=10110101、B=01101110 がある。(A XOR B) AND 11110000 の結果として、正しいものはどれか。

ア.00011011
イ.10100000
ウ.11010000正解
エ.11011011

解説

ビット演算は「列ごとの独立イベント」。XORは「違うとき1」、ANDマスクは「上位4ビットだけ残すフィルター」。1列ずつ淡々と処理すれば、桁上がりもなく機械的に解けます。

なぜ ウ が正解か

ウが正解。手順1(A XOR B):A=10110101、B=01101110。同じビットなら0、違うビットなら1。各桁:1⊕0=1、0⊕1=1、1⊕1=0、1⊕0=1、0⊕1=1、1⊕1=0、0⊕1=1、1⊕0=1 → 11011011。手順2(AND 11110000):マスクは上位4ビット1、下位4ビット0。上位4ビット 1101 はそのまま、下位4ビット 1011 は全部0に潰される → 11010000。

なぜ ア は間違いか

00011011は、XOR結果11011011の上位2ビットのみを0にした値と一致するが、この操作を導く自然な単一ミスは見当たらない。(A^B)&Mは順序を入れ替えても値は変わらず、マスクを反転(00001111)しても00001011になるため、いずれも00011011には一致しない。

なぜ イ は間違いか

10100000はAND(A,B)=00100100とも、A&M=10110000とも一致せず、この値を導く自然な単一ミスは見当たらない。AND は「両方とも光る電球だけ点く」、XOR は「片方だけ光るとき点く」と区別する。

なぜ エ は間違いか

11011011 は A XOR B の生値そのもの。XOR までは正しいが、最後の AND マスク適用を忘れた場合に出る値。マスク操作を確実に最後まで実行することが重要。

出典: AI生成問題(学習用)

この分野の解説記事

基数変換と2の補数 — 科目A最初の壁の越え方