過去問解きまくり研究所 ホーム

令和元年度 秋期 午前 問1

アルゴリズム

流れ図のa及びbに入れる処理

次の流れ図は,10進整数 j(0<j<100)を8桁の2進数に変換する処理を表している。2進数は下位桁から順に,配列の要素 NISHIN(1) から NISHIN(8) に格納される。流れ図のa及びbに入れる処理はどれか。ここで,j div 2 は j を2で割った商の整数部分を,j mod 2 は j を2で割った余りを表す。

流れ図:

開始
 ↓
j を入力
 ↓
変換 k:1, 1, 8(注)   ← ループ端(始まり)
 ↓
a
 ↓
b
 ↓
変換                    ← ループ端(終わり)
 ↓
終了

(注)ループ端の繰返し指定は,変数名:初期値,増分,終値 を示す。

選択肢は原典では a・b の2列の表。

答えと解説を見る

✓ これが正解エa:NISHIN(k) ← j mod 2 / b:j ← j div 2

解説

割った余りを先に配列へ入れ、そのあとで半分にします。

10進数を2進数へ直す作業は、2で割るたびに出る余りを下の桁から順に並べることです。この流れ図の繰返しは、変数を1から8まで1ずつ増やしながら八回まわります。一回のなかでやることは二つあります。いまの値を2で割った余りを取り出して配列へ置くことと、いまの値そのものを2で割った商に置き換えることです。この二つには順序があり、余りのほうを先に取らなければなりません。置き換えを先に済ませてしまうと、すでに一つ上へずれた値から余りを読むことになります。すると最も下の桁が抜け落ち、並び全体が一つずつずれて入ります。八回まわり終えたとき、配列には下の桁から順に0と1が収まります。小さい数を二回ほど手で追うと、ずれ方の形はすぐ見えてきます。基数変換の問いは、順序を入れ替えた肢が必ず並ぶと思って読むと安全です。

ほかの選択肢はなぜ違うのか

出典:令和元年度 秋期 基本情報技術者試験 午前 問1

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)