修了試験 2015-07-26実施分 基本情報技術者試験 問2
8ビットで表される符号なし2進数xが16の倍数であるかどうかを調べる方法として,適切なものはどれか。
正答1
解説
正解は1です。 ビット演算(マスク演算)で16の倍数を判定する方法を問う問題です。 16は2の4乗なので、2進数で16の倍数は下位4ビットがすべて0になります。 したがって、下位4ビットだけを取り出して0かどうかを調べればよいことになります。 【選択肢別解説】 1:○ 00001111との論理積をとると、上位4ビットは必ず0になり、下位4ビットだけがそのまま残ります。 結果が0なら下位4ビットがすべて0なので、xは16の倍数です。 例えば32(00100000)は結果が0になり、33(00100001)は0になりません。 2:× 00001111との論理和では、下位4ビットが必ず1になります。 そのため結果は決して0にならず、判定には使えません。 3:× 11110000との論理積は上位4ビットを取り出す操作です。 結果が0になるのは上位4ビットがすべて0のとき、つまりxが16未満のときです。 16の倍数かどうかではなく、16未満かどうかの判定になります。 4:× 11110000との論理和では、上位4ビットが必ず1になります。 これも結果が0になることはないので、判定に使えません。 【ポイント】 特定のビットを取り出したいときは、取り出したい位置を1にしたマスクとの論理積をとります。 2のn乗の倍数かどうかは、下位nビットがすべて0かどうかで判定できます。まとめて解く
修了試験 2015-07-26実施分を通しで解く(80問)→