平成23年度 秋期 基本情報技術者試験 午前 問1
テクノロジ/基礎理論16ビットの2進数 n を16進数の各桁に分けて,下位の桁から順にスタックに格納するために,次の手順を4回繰り返す。a,b に入れる適切な語句の組合せはどれか。ここで,XXXX16 は16進数 XXXX を表す。 〔手順〕 (1) a をxに代入する。 (2) xをスタックにプッシュする。 (3) nをb論理シフトする。 (注:本サイトでは原問題の表を文字表記に変換しています)
出典:平成23年度 秋期 基本情報技術者試験 午前 問1
- アa:n AND 000F16,b:左に4ビット
- イa:n AND 000F16,b:右に4ビット
- ウa:n AND FFF016,b:左に4ビット
- エa:n AND FFF016,b:右に4ビット
正解:イ
解説
16ビットの2進数を16進数の各桁(4ビットずつ)に分解するには,下位4ビットを取り出す操作と,次の桁を下位に移動させる操作を繰り返します。下位4ビットだけを取り出すには,下位4ビットが全て1である000F16とAND演算をとり,上位ビットを0にマスクします。取り出した後は,nを右に4ビット論理シフトすることで,次の4ビットが下位に移動し,同じ処理を繰り返せます。
選択肢ごとの解説
- ア誤り。aはFFF016ではなく000F16でなければ下位4ビットを取り出せません。
- イ正しい。000F16とのANDで下位4ビットを取り出し,右に4ビット論理シフトすることで次の桁を順に下位へ移動できます。
- ウ誤り。aはFFF016ではなく000F16とのANDが必要で,これでは上位ビットが残ってしまいます。
- エ誤り。bが左シフトでは,取り出したい次の桁が下位に来ず,正しく分解できません。