アルゴリズムとプログラミング
基本情報技術者試験 科目A免除 修了試験 20201213 実施分 問1
次の流れ図は,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 の組を表にしたもの(行ア〜エ,列 a・b)。
- ア a: j ← j div 2 / b: NISHIN(k) ← j mod 2
- イ a: j ← j mod 2 / b: NISHIN(k) ← j div 2
- ウ a: NISHIN(k) ← j div 2 / b: j ← j mod 2
- エ a: NISHIN(k) ← j mod 2 / b: j ← j div 2
出典:基本情報技術者試験 科目A免除 修了試験 20201213 実施分 問1
答えと解説を見る
正解:エ
覚える知識
10進→2進変換アルゴリズム(除算2進法)
10進整数を2進数にするには、2で割った余りを下位桁から順に取り出し、商を次の被除数にして0になるまで繰り返す。
この問題で必要なこと
10進整数を2で割った余りを下位桁から順に格納し、商を次の被除数にする。余りの格納を先に行い、その後で商に更新する順序が必要。
ひっかけ
商と余りの役割の取り違え、および更新(j←j div 2)を先にして余りを取る順序の誤り。
この知識の出題:本試験系 1 回・免除試験 3 回(公開問題での観測値)