基本情報技術者試験「排他的論理和」の問題
あるビット列の特定ビットだけを反転(0は1へ、1は0へ)し、他のビットは変えずに保ちたい。マスクとの間で行うべきビット演算はどれか。
ア反転したいビットを1にしたマスクとの排他的論理和(XOR)をとる
イ反転したいビットを1にしたマスクとの論理和(OR)をとる
ウ反転したいビットを0にしたマスクとの論理積(AND)をとる
エ全ビットを反転する否定(NOT)を施す
正解
ア.反転したいビットを1にしたマスクとの排他的論理和(XOR)をとる
XORは『同じなら0、異なれば1』。マスクが1の位置では元値が反転し、0の位置では元値が保たれる。反転したいビットを1にしたマスクとのXORで目的のトグルが実現でき正しい。
?選択肢ごとの解説
ア ○XORは『同じなら0、異なれば1』。マスクが1の位置では元値が反転し、0の位置では元値が保たれる。反転したいビットを1にしたマスクとのXORで目的のトグルが実現でき正しい。
イ ×OR(論理和)はマスクが1の位置を必ず1に固定するだけで、元が1だったビットを0へ反転できない。
ウ ×マスクが0の位置とのANDはそのビットを0にクリアする操作で、反転ではなく消去になってしまう。
エ ×NOTは全ビットを一律反転するため、変えたくない他のビットまで反転させてしまい条件を満たさない。
✎くわしく
XORはビット操作の万能ツールで、1とのXOR=反転、0とのXOR=保持という性質を持つ。ORはビットを立てる、ANDはビットを残す/消すに使い、トグルにはXORが唯一適する。同じ値を2回XORすると元に戻る性質も重要である。
✓本番での押さえどころ
試験のコツ
ビット操作の対応を暗記: 立てる=OR、消す=ANDマスク、反転=XOR、全反転=NOT。
覚え方
XORは『違いを見つけてひっくり返す』。1を当てたところだけ裏返る、と覚える。
よくある誤り
反転をORやNOTで行おうとして、立てるだけ・全反転になってしまう誤りが多い。
基礎理論の他の問題
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0081