基本情報技術者試験 令和元年度 秋季 午前 問2
8 ビット、16 進表記、排他的論理和(XOR)、論理和(OR)についての問題。
--------------------------
令和元年度 秋期 午前 問2
8 ビットの値の全ビットを反転する操作はどれか。
ア
16 進表記 00 のビット列と排他的論理和をとる。
イ
16 進表記 00 のビット列と論理和をとる。
ウ
16 進表記 FF のビット列と排他的論理和をとる。
エ
16 進表記 FF のビット列と論理和をとる。
--------------------------
解説
問題では "8 ビットの値"
選択肢では "16 進表記のビット列"
16 進数の 1 桁(0 ~ F)は 4 ビットの値と対応する。
16 進表記 | 4 ビット表記 | (参考)10 進表記 |
0 | 0000 | 0 |
1 | 0001 | 1 |
2 | 0010 | 2 |
3 | 0011 | 3 |
4 | 0100 | 4 |
5 | 0101 | 5 |
6 | 0110 | 6 |
7 | 0111 | 7 |
8 | 1000 | 8 |
9 | 1001 | 9 |
A | 1010 | 10 |
B | 1011 | 11 |
C | 1100 | 12 |
D | 1101 | 13 |
E | 1110 | 14 |
F | 1111 | 15 |
4 ビット列は各列が 0 or 1 の 2 パターンで、それが 4 列あるので パターンあることになる。
4 ビット列で表現できるパターンは 16 パターン。
16 進数の 1 桁(0 ~ F)で表現できるパターンも 同じ16 パターン。
なので、4 ビット列と 16 進数の 1 桁を相互に変換することがよくある。
回答の選択肢には 16 進表記 00 と FF がでてくる。
上の表のとおり、16 進表記の 0 はビット列にすると 0000、F はビット列にすると 1111 なので、16 進表記 00 は 00000000、FF は 11111111 のビット列になる。
問題文は「8 ビットの値の全ビットを反転する操作はどれか」
選択肢にある排他的論理和と論理和についてはこっちで書いたので参考までに。
適当な 8 ビットの値を 10010110 としてみて、具体的に各選択肢をみてみる。
選択肢ア「16 進表記 00 のビット列と排他的論理和をとる」
適当な 8 ビット | 1 0 0 1 0 1 1 0 |
16 進表記 00 のビット列 | 0 0 0 0 0 0 0 0 |
上 2 つの排他的論理和(XOR) | 1 0 0 1 0 1 1 0 |
結果は元の適当な 8 ビットのままになってしまっている。
選択肢イ「16 進表記 00 のビット列と論理和をとる」
適当な 8 ビット | 1 0 0 1 0 1 1 0 |
16 進表記 00 のビット列 | 0 0 0 0 0 0 0 0 |
上 2 つの論理和(OR) | 1 0 0 1 0 1 1 0 |
これも結果は元の適当な 8 ビットのままになってしまっている。
選択肢ウ「16 進表記 FF のビット列と排他的論理和をとる」
適当な 8 ビット | 1 0 0 1 0 1 1 0 |
16 進表記 FF のビット列 | 1 1 1 1 1 1 1 1 |
上 2 つの排他的論理和(XOR) | 0 1 1 0 1 0 0 1 |
結果をみると元の適当な 8 ビットが全て反転していることがわかる。
ということで正解は選択肢ウ。
選択肢エ「16 進表記 FF のビット列と論理和をとる」
適当な 8 ビット | 1 0 0 1 0 1 1 0 |
16 進表記 FF のビット列 | 1 1 1 1 1 1 1 1 |
上 2 つの論理和(OR) | 1 1 1 1 1 1 1 1 |
結果は全て 1 になってしまっている。11111111 と OR をとれば、当然こうなる。
4 ビットと 16 進数表記の変換は IPv6 の表記でも使われる。
240f:62:4304:1:e5cf:d9b8:e82e:f6db とか。
手動で設定したら高確率で入力ミスしそう。
前後の問題はこちら。