任意の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」是与 1111 做逻辑或(OR)运算时的结果,而不是异或;在异或运算下,低位各位是 0 还是 1 取决于 X 原来的值。
对高位和低位的处理完全颠倒了。掩码 00001111 的高位是 0,所以「保持原样」的恰恰是高位,而排列着 1 的低位才是要反转的一侧。这个选项相当于把掩码误读成 11110000 时的描述。
低 4 位反转这一点是正确的,但对高 4 位的描述有误。与 0 做异或会保留原来的值,所以高位保持原样,并不会「全部变为 0」。高位被强制变为 0,那是用 0000 做逻辑与(AND)掩码时的结果,与异或是不同的运算。
正解 正确答案是エ。把图中的真值表逐位读一遍就会发现,异或(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 做异或,保持原样;低 4 位是与 1 做异或,0、1 全部反转。表述这一点的正是エ。用具体例子确认一下:当 X=10100101 时,10100101 XOR 00001111 = 10101010,可以看到高位的 1010 保持不变,低位的 0101 反转成了 1010。