平成30年度 秋期 ITパスポート試験 公開問題 問79 解説 ビットごとの論理積
8ビットの2進データ X と00001111について, ビットごとの論理積をとった結果は どれか。ここでデータの左方を上位, 右方を下位とする。
- 下位4ビットが全て0になり, Xの上位4ビットがそのまま残る。
- 下位4ビットが全て1になり, Xの上位4ビットがそのまま残る。
- 上位4ビットが全て0になり, Xの下位4ビットがそのまま残る。 ✓ 正答
- 上位4ビットが全て1になり, Xの下位4ビットがそのまま残る。
解説
この問題は、論理積(AND演算)のルールを適用して、特定のビットだけを抜き出すマスク処理の考え方を理解しているかを問うものです。
結論を導くための手順は以下の通りです。
- 論理積(AND)の基本ルールを確認する:両方のビットが1のときだけ結果が1になり、それ以外(0と1、1と0、0と0)はすべて0になる。
- 0との論理積を考える:任意のビットと0のANDをとると、結果は必ず0になる。
- 1との論理積を考える:任意のビットと1のANDをとると、元のビットの値がそのまま維持される。
- 問題に適用する:Xのビット列と00001111を並べて、上位4桁と下位4桁でこのルールを当てはめる。
上位4桁は0とのANDになるため、結果は0000に固定されます。下位4桁は1とのANDになるため、元のXの下位4桁がそのまま残ります。したがって、上位4ビットはすべて0になり、下位4ビットにはXの値がそのまま残るという結果になります。
ビット演算における論理積は、特定のビットを取り出すためのマスク処理として頻繁に使われます。たとえば、IPアドレスの計算においてネットワーク部とホスト部を分離する際にもこの手法が使われます。サブネットマスクという言葉は、まさにこのビット演算による絞り込みを行っていることに由来しています。
試験対策としては、1とANDをとれば素通り(値がそのまま残る)、0とANDをとれば消去(値が0になる)と覚えておくと、複雑なビット列の問題でも即座に判断できるようになります。逆に、論理和(OR演算)の場合は、1とORをとると強制的に1にセットでき、0とORをとると値が変わらないという性質があるため、セットで覚えておくとより強固な知識になります。
- わかりやすい情報処理技術者試験解説サイト 論理演算(AND, OR, NOT, XOR)