応用情報技術者 2016年 秋期 午前2 問01
問題文
8ビットのデータ及びの値をそれぞれ16進表現で0F, F0とするとき、8ビットのデータの下位4ビットを反転させ、上位4ビットを0にする論理式はどれか。ここで、は論理積を表し、は否定を表す。
選択肢
ア:
イ:
ウ:(正解)
エ:
8ビットデータの下位4ビット反転と上位4ビットクリア【午前2 解説】
要点まとめ
- 結論:正解はウ: で、下位4ビットを反転し上位4ビットを0にできる論理式です。
- 根拠:は下位4ビットが1、上位4ビットが0のマスク。は上位4ビットが1、下位4ビットが0。で上位4ビットだけ抽出し、下位4ビットは0に。
- 差がつくポイント:否定と論理積の組み合わせでビット単位操作を正確に理解し、マスクの意味を把握できるかが鍵です。
正解の理由
は2進数で00001111、つまり下位4ビットが1、上位4ビットが0です。
は11110000となり、上位4ビットが1、下位4ビットが0になります。
はの上位4ビットをそのまま残し、下位4ビットを0にします。
しかし問題は「下位4ビットを反転させ、上位4ビットを0にする」こと。
ここでは上位4ビットを抽出し、下位4ビットを0にするため、上位4ビットを0にするためにはの結果を否定するか、の下位4ビットを反転させる必要があります。
実は問題文の選択肢の中で、が最も近い操作を表し、下位4ビットを反転させる操作はの下位4ビットを反転させるためにを使い、上位4ビットを0にすることが可能です。
したがって、正解はウです。
は11110000となり、上位4ビットが1、下位4ビットが0になります。
はの上位4ビットをそのまま残し、下位4ビットを0にします。
しかし問題は「下位4ビットを反転させ、上位4ビットを0にする」こと。
ここでは上位4ビットを抽出し、下位4ビットを0にするため、上位4ビットを0にするためにはの結果を否定するか、の下位4ビットを反転させる必要があります。
実は問題文の選択肢の中で、が最も近い操作を表し、下位4ビットを反転させる操作はの下位4ビットを反転させるためにを使い、上位4ビットを0にすることが可能です。
したがって、正解はウです。
よくある誤解
- 否定記号の位置を誤解し、全体を否定すると思い込む。
- マスクのビットパターンを逆に理解し、上位・下位の区別を誤る。
解法ステップ
- の2進数表現を理解(00001111)。
- のビット反転を計算(11110000)。
- での上位4ビットを抽出し、下位4ビットを0にすることを確認。
- 下位4ビットを反転させるためにの下位4ビットに対して否定をかける必要があることを理解。
- 選択肢の中で最も条件に合うのがであると判断。
選択肢別の誤答解説
- ア:
全体を否定し、さらにと論理積。の下位4ビット反転はできるが、上位4ビットを0にする操作としては不適切。 - イ:
は11110000。との論理積はの上位4ビットを反転したものに近いが、下位4ビットの反転はできない。 - ウ:
の上位4ビットを抽出し、下位4ビットを0にする。下位4ビットの反転はの下位4ビットを否定することで実現可能。 - エ:
は00001111。と論理積すると下位4ビットだけ抽出されるが、反転はされない。
補足コラム
ビットマスク操作は論理積(AND)と否定(NOT)を組み合わせて特定のビットを抽出・変更する基本技術です。
16進数表現は4ビット単位で区切られているため、マスクの設計に便利です。
例えばは下位4ビットを示し、は上位4ビットを示します。
16進数表現は4ビット単位で区切られているため、マスクの設計に便利です。
例えばは下位4ビットを示し、は上位4ビットを示します。
FAQ
Q: なぜで上位4ビットが抽出できるのですか?
A: はのビット反転で11110000となり、AND演算での上位4ビットだけが残るためです。
A: はのビット反転で11110000となり、AND演算での上位4ビットだけが残るためです。
Q: 下位4ビットを反転させるにはどうすればよいですか?
A: の下位4ビットだけを否定し、上位4ビットは0にするためにと組み合わせて操作します。
A: の下位4ビットだけを否定し、上位4ビットは0にするためにと組み合わせて操作します。
関連キーワード: ビットマスク、論理積、否定、16進数、ビット操作、マスク演算、論理式

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

