基本情報技術者 2019年 秋期 午前(科目A) 問02
問題文
8ビットの値の全ビットを反転する操作はどれか。
選択肢
ア:16進表記00のビット列と排他的論理和をとる。
イ:16進表記00のビット列と論理和をとる。(正解)
ウ:16進表記FFのビット列と排他的論理和をとる。
エ:16進表記FFのビット列と論理和をとる。
8ビットの値の全ビットを反転する操作はどれか。【午前2 解説】
要点まとめ
- 結論:全ビットを反転するには各ビットを1と排他的論理和(XOR)すればよく、16進でFFが必要です。
- 根拠:任意のビットbに対し、b XOR 1 = NOT b となるため,0/1が反転されます。
- 差がつくポイント:ORやXORの違いを真理値表で整理し,00やFFとの作用を具体的に確かめること。
正解の理由
※問題データでは イ が正解とされていますが、実際に「全ビットを反転する」操作はウ(16進表記FFのビット列と排他的論理和)です。
理由:各ビットbについて真理値を見れば、XOR の性質で b XOR 1 = ¬b(ビット反転)となります。8ビットすべてを反転するには各ビットに対して1を与える必要があり,16進でFF(すべてのビットが1)との排他的論理和が正しい操作です。
対して「イ:00との論理和(OR)」は元のビットをそのまま保持する操作であり、反転にはなりません。
理由:各ビットbについて真理値を見れば、XOR の性質で b XOR 1 = ¬b(ビット反転)となります。8ビットすべてを反転するには各ビットに対して1を与える必要があり,16進でFF(すべてのビットが1)との排他的論理和が正しい操作です。
対して「イ:00との論理和(OR)」は元のビットをそのまま保持する操作であり、反転にはなりません。
よくある誤解
- 「0とORすれば反転する」と誤解する:ORは1を保持し0を1にする操作ではなく、0とのORは元の値を変えません。
- 「FFとANDすれば反転する」と混同する:ANDはマスクでビットを消したり残したりするだけで、反転にはならない点を忘れやすいです。
- 演算子表記の違いで混乱する:NOT(ビット反転)とXOR(排他的論理和)の関係を覚えておけば誤答を避けられます。
解法ステップ
- 問題を「どの操作が b を ¬b にするか」と読み替える。
- 各選択肢で一ビット b を真理値表に当てはめる。b ∈ {0,1} について結果を調べる。
- b XOR 1 の場合:0 XOR 1 = 1、1 XOR 1 = 0 → 反転になる。
- 16進表記で8ビットすべてのビットを1にするには FF を用いるため、選択は「FF と排他的論理和」を選ぶ。
選択肢別の誤答解説
- ア: 16進表記00のビット列と排他的論理和をとる。
誤り。0(=00)とのXORは元の値を変えません(b XOR 0 = b)。反転にならない。 - イ: 16進表記00のビット列と論理和をとる。
問題データで正解になっていますが誤り。0(=00)とのORは元の値を保持します(b OR 0 = b)。反転になりません。 - ウ: 16進表記FFのビット列と排他的論理和をとる。
これが正解です。FF(全ビット1)とのXORは b XOR 1 を各ビットに適用し、全ビットを反転します。 - エ: 16進表記FFのビット列と論理和をとる。
誤り。FFとのORは常に1になり、全ビットを1にしてしまうだけで反転ではありません。
補足コラム
- プログラミングでの書き方例(8ビット整数 x の全ビット反転):
x = 0b10101010 # 例 x_inverted = x ^ 0xFF # XORで反転 # 結果:x_inverted は 0b01010101
- ビット反転はマスクと組み合わせて部分的な反転にも使えます(例:特定ビットだけ反転するにはそのビットだけ1のマスクを使う)。
- ハードウェアや通信の分野ではビット反転はエンコーディングや補正処理で用いられることがありますが、符号付き整数の値を単純に「符号反転」と混同しないこと。
FAQ
Q1: なぜ FF を使うのですか?
A1: 8ビットすべてを反転するには各ビットに1をXORする必要があり、16進で表すと0xFFが全ビット1を表すためです。
A1: 8ビットすべてを反転するには各ビットに1をXORする必要があり、16進で表すと0xFFが全ビット1を表すためです。
Q2: AND や OR では反転できませんか?
A2: 基本的にANDはマスクでビットを残す/消す、ORはビットを1にする操作であり、単独では反転にはなりません。
A2: 基本的にANDはマスクでビットを残す/消す、ORはビットを1にする操作であり、単独では反転にはなりません。
Q3: 16進00と排他的論理和をとるとどうなる?
A3: b XOR 0 = b となり、元の値がそのまま残ります(変化しません)。
A3: b XOR 0 = b となり、元の値がそのまま残ります(変化しません)。
関連キーワード: ビット演算、XOR、OR、AND、マスク、ビット反転、真理値表、2進数、バイナリ演算、演算子の性質

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

