正答3
解説
正解は3です。
8ビットのうち最上位ビットを0にし、下位7ビットだけをそのまま残すビット演算(マスク演算)を問う問題です。
ANDは、マスク側のビットが1の位置は元の値を残し、0の位置は必ず0にします。
したがって、2進数01111111、つまり16進数7FとのANDをとればよいことになります。
【選択肢別解説】
1:× 16進数0Fは2進数00001111です。
ANDをとると下位4ビットしか残らず、5〜7ビット目のデータまで0になってしまいます。
2:× 0FとのORをとると、下位4ビットが強制的に1になります。
データが書き換わるうえ、パリティビットも消えません。
3:○ 7Fは2進数01111111です。
ANDをとると最上位のパリティビットだけが0になり、下位7ビットは元の値のまま残ります。
4:× FFとのXOR(排他的論理和)は、8ビットすべてを反転させる演算です。
パリティビットを取り除くことはできず、下位7ビットも反転してしまいます。
【ポイント】
ビットを取り出す(残す)ときはAND、特定のビットを1にするときはOR、反転するときはXORを使います。
マスクのどの位置を1にするかで、残るビットが決まります。