本文へ移動

基本情報技術者試験 · 学習ガイド

2019年度 秋期 午前の問題・解答解説

旧制度の午前・午後と、2023年度以降の科目A・科目Bの公開問題を区別しています。現在の試験対策では現行シラバスと科目Bの形式を確認してください。公開問題は本試験の全出題を網羅する資料ではありません。

2019年度 秋期 午前の概要
30:00

問題番号から選ぶ

10進数から2進数への基数変換アルゴリズム

テクノロジ系 · 基数変換 / アルゴリズムと流れ図

10進整数 j(0 < j < 100)を8桁の2進数に変換し、下位桁から順に配列要素 NISHIN(1) から NISHIN(8) に格納する流れ図がある。流れ図中の a 及び b に入れる処理の組合せとして、適切なものはどれか。ここで、j div 2 は j を2で割った商の整数部分、j mod 2 は j を2で割った余りを表す。

解答・解説を表示

解答

エ

解説

まず要点:10進数を2進数にするときは、2で割った余りを下位の桁から順に並べ、商を次の計算に使います。だから1回のくり返しでは「余りを配列に入れる」を先に行い、「商に置き換える」を後にします。順番を逆にすると、いちばん下の桁の情報が消えてしまいます。

解き方

  1. 2進数の各桁を求めるため、いまのjを2で割った余り(j mod 2)を配列NISHIN(k)に入れる処理を先に置きます。
  2. 余りを取り出したあと、次の桁を処理するためjを2で割った商(j div 2)に置き換える処理を置きます。
  3. よってaにはNISHIN(k) ← j mod 2、bにはj ← j div 2が入り、選択肢エが正解です。
選択肢 ア不正解
商を先に計算すると、もとのjのいちばん下の桁(最下位ビット)が消えてしまうので誤りです。
選択肢 イ不正解
jに余りを入れるともとの数の情報が消え、配列に商を入れるのも桁の決まりとして誤りです。
選択肢 ウ不正解
配列に商を入れ、jを余りに変える処理で、基数変換の手順が逆になっているため誤りです。
選択肢 エ正解
余り(ビットの値)を配列に入れたあと、商を新しいjとして次のくり返しに渡す正しい処理です。

答えの内訳

a:NISHIN(k) ← j mod 2
現在の値 j を2で割った余り(最下位ビットの値)を求め、配列の k 番目の要素に格納します。
b:j ← j div 2
次の桁の値を求めるため、j を2で割った商で更新して1ビット右へシフトさせます。

覚えるポイント

  • 10進数からn進数への変換は「nで割った余りを下位桁から記録し、商を次の値にする」の繰り返しです。

間違えやすいところ

  • 商への更新(j div 2)を余りの保存(j mod 2)より先にすると、いちばん下の桁が消えてしまう点に注意しましょう。

出題の前提:令和元年度秋期基本情報技術者試験午前問1出題条件

出典:IPA『2019年度 秋期 午前』
公式問題冊子 p.3 ↗(www.ipa.go.jp)

2019年度 秋期 午前

参照した公式資料

IPAが公開した2019年度 秋期 午前の問題・解答資料です。