基本情報技術者試験「ビットマスク」の問題
8ビットの値10110101に対し、マスク00001111との論理積(AND)をとった結果を10進数で表すとどれか。
ア181 のまま変化なし
イ176 になる
ウ15 である
エ5 が得られる
正解
エ.5 が得られる
ANDはマスクが1のビットだけ元の値を残し、0のビットを0にする。下位4ビットが1のマスクで上位4ビットが消え、残る0101=4+1=5となり正しい。
?選択肢ごとの解説
ア ×181は元の値10110101のままで、ANDによる上位ビットの消去を行っていない誤りである。
イ ×176は上位4ビット1011だけを残した値で、マスクの0と1を取り違えて上位を抽出してしまった誤りである。
ウ ×15はマスク00001111自体の値、またはORの結果と混同した誤りで、元値の下位ビットを反映していない。
エ ○ANDはマスクが1のビットだけ元の値を残し、0のビットを0にする。下位4ビットが1のマスクで上位4ビットが消え、残る0101=4+1=5となり正しい。
✎くわしく
ビットマスクはANDで特定ビットの抽出やクリアを行う。マスクが1の位置は元値を通し、0の位置は強制的に0にする。上位を残したいなら11110000を、下位を残したいなら00001111を用いるなどマスク設計が要点である。
✓本番での押さえどころ
試験のコツ
『AND=必要ビットだけ通す関所』『OR=ビットを立てる』『XOR=ビットを反転』と演算ごとの役割を固定する。
覚え方
ANDマスクは『フィルタ』。1の穴だけ通し0は塞ぐ、と覚えると抽出・クリアを間違えない。
よくある誤り
AND(残す)とOR(立てる)を混同する、またはマスクの1と0の意味を逆に解釈する誤りが多い。
基礎理論の他の問題
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0080