平成25年度 春期 基本情報技術者試験 午前 問1
テクノロジ/アルゴリズム16ビットの2進数 n を16進数の各桁に分けて,下位の桁から順にスタックに格納するために,次の手順を4回繰り返す。a,b に入る適切な語句の組合せはどれか。ここで,XXXX16 は16進数 XXXX を表す。 〔手順〕 (1) a をxに代入する。 (2) xをスタックにプッシュする。 (3) nを b 論理シフトする。 (注:本サイトでは原問題の表を文字表記に変換しています)
出典:平成25年度 春期 基本情報技術者試験 午前 問1
- アa:x ← n AND 16進数 000F,b:左に4ビット
- イa:x ← n AND 16進数 000F,b:右に4ビット
- ウa:x ← n AND 16進数 FFF0,b:左に4ビット
- エa:x ← n AND 16進数 FFF0,b:右に4ビット
正解:イ
解説
16ビットの2進数を16進数表記の各桁に変換するには,下位4ビットをマスクして取り出し(AND 000F),それをスタックに積んだ後,nを右へ4ビット論理シフトして次の4ビットを下位に持ってくる,という操作を4回繰り返します。上位4ビットをマスクするFFF0や,左シフトでは正しく桁を取り出せません。
選択肢ごとの解説
- ア誤り。bが左シフトになっており,次の4ビットが下位に来ないため正しく桁を取り出せません。
- イ正しい。a=n AND 000Fで下位4ビットを取り出し,b=右に4ビットシフトで次の桁を下位に送り込む,という組合せで正しく16進数の各桁を取り出せます。
- ウ誤り。AND FFF0は下位4ビットを0にしてしまい,上位のビットだけが残るので目的のxの値が得られません。
- エ誤り。AND FFF0で下位4ビットを消してしまい,bが右シフトでも取り出したい桁の値になりません。