この概念が出た関連問題

この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は ウ

解説

ビットマスク操作の基本問題です。8ビット符号の最上位ビットがパリティビットで、下位7ビットがデータ本体です。下位7ビットだけを取り出すには、「残したいビット位置に1、消したいビット位置に0」を並べたマスク値との AND(論理積)をとります。AND は両方が1のときだけ1を返すため、マスクが1の桁は元の値がそのまま残り、マスクが0の桁は必ず0になります。下位7ビットを残すマスクは2進数で 01111111、16進表記では 7F です。例えば元データが 10110101 なら、10110101 AND 01111111 = 00110101 となり、最上位のパリティビットだけが0にクリアされ、下位7ビットは無傷で取り出せます。したがってウが正解です。ビット操作の定石として、「特定ビットの取り出し(クリア)は AND マスク」「特定ビットのセットは OR マスク」「反転は XOR マスク」という3点セットで覚えておくと、この種の問題は即答できます。

なぜ他の選択肢は違うのか

選択肢 ア
16進数 0F は2進数で 00001111 であり、AND をとると下位4ビットしか残りません。下位7ビットを取り出したいのに、マスクの1の範囲が狭すぎるため、ビット4〜6 のデータが失われてしまいます。16進数1桁が2進数4桁に対応することを思い出し、7ビット分のマスクは 0111 1111 = 7F になると桁数を確認すれば防げる誤りです。
選択肢 イ
16進数 0F(00001111)との OR は、下位4ビットを強制的にすべて1にセットする操作です。OR はどちらかが1なら1を返すため、マスクが1の桁は元の値に関係なく1になり、データの内容が破壊されます。「取り出す」のではなく「書き換える」操作になっている点で目的に合いません。OR はビットのセット用、AND はビットの取り出し・クリア用という役割の違いを押さえましょう。
選択肢 エ
16進数 FF(11111111)との XOR は全ビットを反転する操作です。パリティビットを除去するどころか、データ本体の7ビットまですべて0と1が入れ替わってしまい、元の値とは別物になります。XOR FF は「反転」の定石であって「抽出」には使えません。問題文の「下位7ビットを得る」という目的から、値を変化させずに残す AND マスクを選ぶ必要があります。

解くときのポイント

ビット操作の3定石: 取り出し・クリア=AND、セット=OR、反転=XOR。16進1桁=2進4桁なので、7ビットマスクは 7F(0111 1111)と即変換できるように。