修了試験 2012-01-22実施分 基本情報技術者試験 問1
次の流れ図は,10進整数 j (0<j<100) を8桁の2進数に変換する処理を表している。 2進数は下位桁から順に,配列の要素NISHIN(1)からNISHIN(8)に格納される。 流れ図のa及びbに入る処理はどれか。 ここで,j div2はjを2で割った商の整数部分を,j mod2はjを2で割った余りを表す。

正答4
解説
正解は4です。 10進数を2進数に直すには、2で割った余りを下位桁から順に並べていきます。 流れ図は、kを1から8まで1ずつ増やしながら処理aと処理bを8回繰り返すループになっています。 したがって、aで「jを2で割った余りをNISHIN(k)に格納」し、bで「jを2で割った商を新しいjにする」必要があります。 【処理の流れ】 例としてj=6のとき、k=1ではaで6 mod2=0をNISHIN(1)に格納し、bでjを3にします。 k=2ではaで3 mod2=1をNISHIN(2)に格納し、bでjを1にします。 k=3ではaで1 mod2=1をNISHIN(3)に格納し、bでjを0にします。 k=4以降はjが0のままなので、NISHIN(4)〜NISHIN(8)には0が入ります。 下位から0,1,1,0,…となり、6の2進数00000110が正しく得られます。 【選択肢別解説】 1:× aでjを先に商で置き換えてしまうため、bで求める余りは元のjの余りではなくなります。 正しくは余りを先に格納し、その後に商でjを更新します。 2:× 商をNISHIN(k)に格納しても2進数の各桁にはなりません。 2進数の桁になるのは商ではなく余りです。 3:× jに余りを代入するとjは0か1になり、次の桁を求められません。 jは商で更新し、余りを配列に格納するのが正しい手順です。 4:○ 余りをNISHIN(k)に格納してから、jを商で更新します。 これを8回繰り返すと下位桁から順に2進数が得られます。 【ポイント】 基数変換は「余りを格納し、商で次へ進む」の順番が肝心です。 処理の順序を入れ替えると結果が変わるので、具体的な値で1周たどって確かめましょう。まとめて解く
修了試験 2012-01-22実施分を通しで解く(80問)→