任意の8ビットのデータXと, 8ビットのデータ00001111をビットごとに排他的論理和をとった結果はどれか。ここで, 各1ビットのデータAとデータBの排他的論理和をとった結果Cの値は次のように表される。また, データの左方を上位, 右方を下位と呼ぶ。 排他的論理和
| A | B | C |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
この問題の解説と、これまでの解答の記録です。
任意の8ビットのデータXと, 8ビットのデータ00001111をビットごとに排他的論理和をとった結果はどれか。ここで, 各1ビットのデータAとデータBの排他的論理和をとった結果Cの値は次のように表される。また, データの左方を上位, 右方を下位と呼ぶ。 排他的論理和
| A | B | C |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
上位と下位の役割が逆であるうえ、下位の結果も誤り。マスクの上位4ビットは 0000 なので上位は反転せずそのまま残る。また下位4ビットが「すべて 1 になる」のは XOR ではなく論理和 (OR) と 1111 をとった場合の結果であり、XOR では X の元の値によって 0 にも 1 にもなる。
上位と下位の扱いが完全に逆になっている。マスク 00001111 の上位は 0 なので上位こそ「そのまま残る」側であり、1 が並ぶ下位こそ反転する側である。この選択肢はマスクを 11110000 と読み違えた場合の記述にあたる。
下位4ビットが反転する点は正しいが、上位4ビットの記述が誤り。0 との XOR は元の値を保存するので上位はそのまま残り、「すべて 0 になる」わけではない。上位が強制的に 0 になるのは論理積 (AND) で 0000 をマスクした場合の結果であり、XOR とは演算が異なる。
正解 正解は エ。図の真理値表を 1 ビットずつ読み解くと、排他的論理和 (XOR) には二つの顔がある。相手が 0 のとき (0 XOR 0=0、1 XOR 0=1) 結果は元の値のまま、相手が 1 のとき (0 XOR 1=1、1 XOR 1=0) 結果は元の値の反転になる。つまり XOR は「相手が 0 なら保存、1 なら反転」というスイッチとして働く。ここでマスクは 00001111 で、上位4ビットが 0000、下位4ビットが 1111 である。したがって X の上位4ビットは 0 と XOR されるのでそのまま残り、下位4ビットは 1 と XOR されるのですべて 0,1 が反転する。これを述べているのが エ。具体例で確かめると、X=10100101 のとき 10100101 XOR 00001111 = 10101010 となり、上位 1010 は不変、下位 0101 が 1010 に反転していることが確認できる。