基本情報技術者試験のサンプル問題(科目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)
正しい処理を選ぶための考え方
変換の手順
- j を2で割った余りをNISHIN(k)に格納(下位桁)
- j を2で割って更新(次の桁)
つまり順番は、
- NISHIN(k) ← j mod 2
- j ← j div 2
このようにすることで、次のステップで新しい j の下位ビットを再度取得できる。
各肢を検討していこう
選択肢 | a(jの更新) | b(NISHINへの格納) |
ア | j ← j div 2 | NISHIN(k) ← j mod 2 |
イ | j ← j mod 2 | NISHIN(k) ← j div 2 |
ウ | NISHIN(k) ← j div 2 | j ← j mod 2 |
エ | NISHIN(k) ← j mod 2 | j ← 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 を後に行う。
コメント