基本情報技術者試験のサンプル問題を解こう!(2)(科目A)「基数変換」

スポンサーリンク
IT系

基本情報技術者試験のサンプル問題(科目A)を解いてみよう。

正解:エ

この問題は、「10進整数 j(0<j<100)を8桁の2進数に変換する処理」を表すフローチャートに関して、処理内容(aとbの処理)を特定する問題である。


問題の全体像の理解

フローチャートでは、jという10進数を入力し、それを2進数(8桁)に変換して配列 NISHIN(1) から NISHIN(8) に格納する。
このとき、下位桁から順に格納するので、2進数の下から上に向かって格納されていく。


ループの役割

ループは k = 1 から 8 まで 実行される。

つまり、8回ループして、j を2で割った余り(j mod 2)をNISHINに1桁ずつ格納していく。


2進数変換の基本

10進数を2進数に変換するには、以下のように繰り返し2で割り、余りを記録していく。

例:j = 13

13 ÷ 2 = 6 余り 1
 6 ÷ 2 = 3 余り 0
 3 ÷ 2 = 1 余り 1
 1 ÷ 2 = 0 余り 1
→ 1101(下位桁から:1 → 0 → 1 → 1)


正しい処理を選ぶための考え方

変換の手順

  1. j を2で割った余りをNISHIN(k)に格納(下位桁)
  2. j を2で割って更新(次の桁)

つまり順番は、

  1. NISHIN(k) ← j mod 2
  2. j ← j div 2

このようにすることで、次のステップで新しい j の下位ビットを再度取得できる。


各肢を検討していこう

選択肢a(jの更新)b(NISHINへの格納)
j ← j div 2NISHIN(k) ← j mod 2
j ← j mod 2NISHIN(k) ← j div 2
NISHIN(k) ← j div 2j ← j mod 2
NISHIN(k) ← j mod 2j ← j div 2

  j を先に割ってしまうので、正しい2進数に変換できない。
  j を mod 2 すると0か1になるので、そのあと NISHIN(k) に j div 2 を入れても意味不明となる。
  j div 2をNISHINに格納してしまうと、余りではなく商を保存してしまう。

a: NISHIN(k) ← j mod 2
b: j ← j div 2
正解は「エ」となる。


まとめ

  • 2進数変換では「余りを保存」、「商で更新」の順が重要である。
  • 下位桁から順に格納するため、NISHIN(k) ← j mod 2 を先に行い、j ← j div 2 を後に行う。

コメント

タイトルとURLをコピーしました