2進数変換フローチャートにおける剰余と商の代入

各桁は$NISHIN(k)\leftarrow j\bmod 2$で得て、次の反復用に$j\leftarrow j\operatorname{div}2$とするため、エです。 2進数への変換では、現在値を2で割った余りがその桁のビットになり、商が次の反復で処理する値になります。したがって、余りの格納を先に行う必要があります。 現在の$j$を2で割った余りを$NISHIN(k)$へ格納する。 現在の$j$を2で割った商で$j$を更新し、次の桁へ進む。 この順序を満たす$a,b$の組はエである。 例えば j=13 でたどると次のようになります。NISHIN(1) から順に 1, 0, 1, 1, 0, 0, 0, 0 が入り、上位から読むと 00001101(=13)です。 k a:NISHIN(k)←j mod 2 b:j←j div 2 1 13÷2の余り=1 13÷2の商=6 2 6÷2の余り=0 6÷2の商=3 3 3÷2の余り=1 3÷2の商=1 4 1÷2の余り=1 1÷2の商=0 5 0÷2の余り=0 0÷2の商=0 6 0÷2の余り=0 0÷2の商=0 7 0÷2の余り=0 0÷2の商=0 8 0÷2の余り=0 0÷2の商=0 余りを先に格納してから j を商に更新します。順序が逆(ア)だと、最初の桁に 13 ではなく 6 の余りが入ってしまいます。

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

問題画像

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

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

選択肢

a

b

ア

j←jdiv⁡2j\leftarrow j\operatorname{div}2

NISHIN(k)←j mod 2NISHIN(k)\leftarrow j\bmod2

イ

j←j mod 2j\leftarrow j\bmod2

NISHIN(k)←jdiv⁡2NISHIN(k)\leftarrow j\operatorname{div}2

ウ

NISHIN(k)←jdiv⁡2NISHIN(k)\leftarrow j\operatorname{div}2

j←j mod 2j\leftarrow j\bmod2

エ

NISHIN(k)←j mod 2NISHIN(k)\leftarrow j\bmod2

j←jdiv⁡2j\leftarrow j\operatorname{div}2