応用情報技術者 2016年 秋期 午前2 問01
問題文
8ビットのデータ及びの値をそれぞれ16進表現で0F, F0とするとき、8ビットのデータの下位4ビットを反転させ、上位4ビットを0にする論理式はどれか。ここで、は論理積を表し、は否定を表す。
選択肢
ア:
イ:
ウ:(正解)
エ:
🔒 解説は解答すると表示されます
下位4ビット反転と上位ゼロ化【午前2解説】
正解の理由
設問で要求している「8ビットデータAの下位4ビットを反転させ、上位4ビットを0にする」操作をビット演算で表すと、下位ニブル(マスク 0x0F)だけを否定し、それ以外を0にする式になります。これを式にすると
(ここで )が直接対応します。しかし設問の選択肢の中で提示されている答は ウ()です。与えられた に対して であり、ウ の式は
となります。これは上位4ビットを保持し下位4ビットを0にする動作を表します。したがって、設問文の要求(下位を反転して上位を0にする)と選択肢・解答(ウ)の間に不一致があることに注意してください。以降で各式を具体的に評価し、正しい式と選択肢の意味を整理します。
解法ステップ
- 定数のビット構成を確認する
- は 0000 1111(下位4ビットが1)
- は 1111 0000(上位4ビットが1)
- (8ビットでのビット反転)
- 要求動作を論理式に落とす
- 「下位4ビットを反転(= 各下位ビットを否定)」かつ「上位4ビットを0にする」→ 下位のみ否定して上位を0にするので
- 与えられた選択肢を X, Y に代入して評価する
- ア: (上位を反転して下位0)
- イ: (アと同等)
- ウ: (上位を保持し下位を0)
- エ: (下位を保持し上位を0)
- 上記から、設問で要求された動作に対応する式は であり、これは選択肢に含まれていない。一方で与えられた正解は ウ であり、その式は別の動作(上位保持・下位0)を表す。
選択肢別の誤答解説
- ア:
→ 結果は「上位4ビットは A の反転(~A の上位4ビット)、下位4ビットは0」。設問の「下位を反転して上位を0にする」とは異なる。 - イ:
→ アと同じ式。やはり上位の反転を残し下位を0にする。 - ウ:
→ 「上位4ビットを保持し、下位4ビットを0にする」動作。設問文どおりの“下位を反転”にはならないが、選択肢の中ではマスク操作で上下を分ける典型例となる。 - エ:
→ 「下位4ビットを保持し、上位4ビットを0にする」。保持であって“反転”ではない。
よくある誤解
- マスクの向き(X が下位マスクか上位マスクか)を誤認する
→ 0x0F は下位、0xF0 は上位。桁の向きを間違えると全く異なる結果になります。 - 「反転(invert)」と「選択(maskで保持)」を混同する
→ 反転は否定(NOT)、保持は論理積(AND)で表現。両者は別操作です。
補足コラム
-
下位 n ビットだけを反転する一般式:(M は反転対象のマスク)
-
下位 n ビットだけを反す(トグル)する一般式(ビット反転=0↔1 を実際に切り替える)には XOR を使うのが最も簡潔:
例:下位4ビットを「反転(トグル)」して上位を0にしたい場合はまずトグルしてから上位を0にマスク:
ただし問題の選択肢では XOR を使ったものがないため、選択肢の組合せで表現できるかを見極める必要があります。 -
実務でよく使うマスク表現:0x0F(下位ニブル)、0xF0(上位ニブル)、~X は 8ビットでの反転に注意。
FAQ
Q1:設問の要求と選択肢が一致していないように見えます。どう扱うべきですか?
A1:本問の記述どおり「下位4ビットを否定して上位を0」にしたいなら、正しい式は (選択肢にはない)です。選択肢の中から最も近い振る舞い(上下ニブルの切り分け)を選ぶと、上位を保持して下位を0にする ウ が該当します。試験では設問文と選択肢の整合をよく読み、マスク(X,Y)のビット配置を確実に確認してください。
A1:本問の記述どおり「下位4ビットを否定して上位を0」にしたいなら、正しい式は (選択肢にはない)です。選択肢の中から最も近い振る舞い(上下ニブルの切り分け)を選ぶと、上位を保持して下位を0にする ウ が該当します。試験では設問文と選択肢の整合をよく読み、マスク(X,Y)のビット配置を確実に確認してください。
Q2:下位を「反転(invert)」と「トグル(toggle)」は同じ意味ですか?
A2:本質的に同じ操作(0↔1 を入れ替える)を指しますが、論理式では「否定(NOT)」は単純にビットを反すための演算子であり、あるときは XOR を使って選択的にトグルします。どちらを用いるかは文脈(全ビット否定か選択ビットのみか)に依存します。
A2:本質的に同じ操作(0↔1 を入れ替える)を指しますが、論理式では「否定(NOT)」は単純にビットを反すための演算子であり、あるときは XOR を使って選択的にトグルします。どちらを用いるかは文脈(全ビット否定か選択ビットのみか)に依存します。
関連キーワード: ビット演算、マスク、論理積、ビット否定、ニブル、XOR、マスク設計、論理式評価

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

