離散数学 (全52問中28問目)

No.28

16ビットの2進数 n を16進数の各けたに分けて,下位のけたから順にスタックに格納するために,次の手順を4回繰り返す。a,b に入る適切な語句の組合せはどれか。ここで,xxxx16 は 16 進数 xxxx を表す。

〔手順〕
  • aを x に代入する。
  • x をスタックにプッシュする。
  • n をb論理シフトする。
  • [この問題の出題歴]
  • 基本情報技術者 H16秋期 問2
  • 基本情報技術者 H20春期 問1
  • 基本情報技術者 H23秋期 問1
  • 基本情報技術者 H25春期 問1

分類

テクノロジ系 » 基礎理論 » 離散数学

正解

解説

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の順で値が格納されます。
© 2010-2018 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop