修了試験 2015-12-20実施分 基本情報技術者試験 問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| |ア|j div 2 → j|j mod 2 → NISHIN(k)| |イ|j div 2 → NISHIN(k)|j mod 2 → j| |ウ|j mod 2 → j|j div 2 → NISHIN(k)| |エ|j mod 2 → NISHIN(k)|j div 2 → j|

正答4
解説
正解は4です。 10進数を2進数に変換するには、2で割った余りを下位桁から順に取り出し、商を次に割る数にする操作を繰り返します。 流れ図ではkを1から8まで1ずつ増やしながらaとbを繰り返します。 そのため、aで余りをNISHIN(k)に格納し、bでjを商に更新する順序が必要です。 【処理のたどり方(j=6の例)】 k=1のとき、6 mod 2=0をNISHIN(1)に格納し、jは6 div 2=3になります。 k=2のとき、3 mod 2=1をNISHIN(2)に格納し、jは1になります。 k=3のとき、1 mod 2=1をNISHIN(3)に格納し、jは0になります。 k=4から8までは、jが0のままなので0が格納されます。 上位桁から読むと00000110となり、6の2進表現と一致します。 【選択肢別解説】 1:× aでjを先に商に更新してしまうため、元のjの余りが失われます。 j=6では、jが3になってから余り1を格納するので、最下位桁が本来の0ではなく1になります。 2:× 商をNISHIN(k)に格納し、余りをjに代入しています。 2進数の各桁は0か1の余りなので、商を格納するのは誤りです。 また、jが0か1になってしまい、上位桁を正しく求められません。 3:× 余りをjに代入してから、その商を格納しています。 jは0か1になり、その商は常に0なので、NISHIN(k)にはすべて0が入ります。 4:○ aでj mod 2の値をNISHIN(k)に格納し、bでj div 2の値をjに代入します。 余りを下位桁から格納し、商で次の桁に進むので、正しく変換できます。 【ポイント】 10進数から2進数への変換は「2で割った余りを並べる」のが基本です。 余りを取り出す前に、商でjを上書きしないよう処理の順序に注意します。まとめて解く
修了試験 2015-12-20実施分を通しで解く(80問)→