修了試験 2015-01-25実施分 基本情報技術者試験 問1
16ビットの2進数nを16進数の各桁に分けて,下位の桁から順にスタックに格納するために,次の手順を4回繰り返す。 a,bに入る適切な語句の組合せはどれか。 ここで,XXXX_16は16進数XXXXを表す。 〔手順〕 (1) a をxに代入する。 (2) xをスタックにプッシュする。 (3) nを b 論理シフトする。
正答2
解説
正解は2です。 16ビットの2進数は、4ビットずつ区切ると16進数の4桁に対応します。 下位の桁から順に取り出すには、最下位4ビットだけを残して取り出し、次の桁を最下位へ移動させる操作を繰り返します。 【選択肢別解説】 1:× aのn AND 000F_16は正しく最下位4ビットを取り出せます。 しかし、左に4ビットシフトすると上位の桁が押し出されて消え、最下位には0が入ります。 2回目以降は0しか取り出せないので不適切です。 2:○ 000F_16は2進数で0000 0000 0000 1111なので、nとのANDで最下位4ビット(16進数の最下位桁)だけが残ります。 そのうえでnを右に4ビット論理シフトすると、一つ上の桁が最下位4ビットに移動します。 これを4回繰り返すと、下位の桁から順にすべての桁をプッシュできます。 3:× FFF0_16とのANDでは、最下位4ビットが0になり上位12ビットが残ります。 これは1桁分の値ではないので、桁を取り出すマスクとして誤りです。 4:× 右に4ビットのシフトは正しい操作ですが、aのFFF0_16のマスクが誤りです。 取り出す桁を残すマスクは000F_16です。 【ポイント】 特定のビットを取り出すには、残したい位置を1にしたマスクとのANDを使います。 論理シフトは右に1ビットで2で割る操作にあたり、右に4ビットなら16で割って16進数の1桁分を捨てることになります。まとめて解く
修了試験 2015-01-25実施分を通しで解く(80問)→