平成22年度 秋期 ITパスポート試験 問68 解説 排他的論理和の演算
問68 任意の8ビットのデータXと,8ビットのデータ 00001111 をビットごとに排他的論理和をとった結果はどれか。ここで,各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が反転する。 ✓ 正答
解説
排他的論理和(XOR)は、計算対象のビットが「0」か「1」かによって、元の値を「そのまま残すか」あるいは「反転させるか」を決めるスイッチのような働きをします。今回の問題では、00001111というマスク値と演算を行うことで、上位4ビットは変化させず、下位4ビットのみを反転させる結果を得ることができます。
排他的論理和の性質を理解する
排他的論理和(XOR)のルールを整理すると、次の2つのポイントに集約されます。
- 0と演算したとき:元の値が0なら0、1なら1となり、値は変化しません。
- 1と演算したとき:元の値が0なら1、1なら0となり、値が必ず反転します。
提示された真理値表を見ると、相手側(B)が0のときは、元の値(A)がそのまま結果(C)に出力されています。一方で、相手側(B)が1のときは、結果(C)は元の値(A)と逆の値になっています。この性質が、ビット演算において特定の箇所だけを操作する重要な役割を果たします。
問題を解く思考プロセス
まず、データXを8ビットの並びとして考えます。上位4ビットを ABCD、下位4ビットを EFGH とします。これに 00001111 を並べて排他的論理和をとります。
X: A B C D E F G H マスク: 0 0 0 0 1 1 1 1 結果: A B C D (E反転) (F反転) (G反転) (H反転)
上位4ビット(A, B, C, D)は 0 との演算であるため、元の値がそのまま保持されます。下位4ビット(E, F, G, H)は 1 との演算であるため、すべてのビットが反転します。この結果を文章に直すと、「上位4ビットはそのまま、下位4ビットは反転する」というエの選択肢が導かれます。
ビット演算の活用場面
この考え方は、コンピュータが扱うデータ処理の現場で非常に頻繁に使われます。
まず、データの暗号化の基礎として活用されます。特定の鍵データとXORをとることで値を変換し、もう一度同じ鍵でXORをとれば元の値に戻るという可逆性があるため、簡易的な暗号化処理として利用されます。
また、特定のフラグを操作する場面でも不可欠です。例えば、設定データの中で特定のスイッチ(ビット)だけをオンからオフに、あるいはオフからオンに切り替えたい場合、そのビット位置だけを 1 にしたマスクデータを用意してXORをとれば、他の設定を一切変更することなく目的のビットだけを反転させることができます。
このように、全体の中の一部だけを選択的に変更・操作する「マスク処理」の概念を身につけることは、データ構造やコンピュータアーキテクチャの理解を深めるための第一歩となります。