平成16年秋期試験問題 午前問2

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
16ビットの2進数nを16進数の各けたに分けて,下位のけたから順にスタックに格納するために,次の手順を4回繰り返す。a,bに入る適切な語句の組合せはどれか。ここで,xxxx16は16進数xxxxを表す。

〔手順〕
  • aをxに代入する。
  • xをスタックにプッシュする。
  • nをb論理シフトする。

02a.png
正解 問題へ
分野:テクノロジ系
中分類:基礎理論
小分類:離散数学
解説
16ビットの2進数があるとき、4桁ごとにビット列を取り出すことで16進数の各桁に分けることができます。
下位の桁から順番にスタックに格納していくので、aには2進数の下位4ビットを取り出すための演算がはいります。あるビット列から特定位置のビットの値を取り出すときに用いられるのがAND演算で、この場合は下位4ビットだけを1としたビット列「000F」とAND演算を行うことで下位4ビットの値のみを x に取り出すことができます。

bは、下位から5~8ビット目に位置するビット列を、1~4ビット目に移動したいので「右に4ビット」論理シフトします。

例として16ビットの2進数 1111 0000 1100 0011 で処理の流れを確認してみます。
  1. 1111 0000 1100 0011 AND 0000 0000 0000 1111 の演算結果 0011 をスタックに格納
  2. 右に4ビット論理シフト 0000 1111 0000 1100
  3. 0000 1111 0000 1100 AND 0000 0000 0000 1111 の演算結果 1100 をスタックに格納
  4. 右に4ビット論理シフト 0000 0000 1111 0000
  5. 0000 0000 1111 0000 AND 0000 0000 0000 1111 の演算結果 0000 をスタックに格納
  6. 右に4ビット論理シフト 0000 0000 0000 1111
  7. 0000 0000 0000 1111 AND 0000 0000 0000 1111 の演算結果 1111 をスタックに格納
結果としてスタックには16進数の各桁である0011,1100,0000,1111の順で値が格納されることになります。

この問題の出題歴


Pagetop