関数 binaryToInteger は、1桁以上の符号なし2進数を文字列で表した値を引数 binaryStr で受け取り、その値を整数に変換した結果を戻り値とする。例えば、引数として“100”を受け取ると、4を返す。プログラム中の a, b に入れる字句の適切な組合せはどれか。 [プログラム] ○整数型:binaryToInteger(文字列型: binaryStr) 整数型: integerNum, digitNum, exponent, i integerNum ← 0 for (iを1から binaryStrの文字数まで1ずつ増やす) digitNum ← binaryStr の末尾からi番目の文字を整数型に変換した値 //例:文字“1” であれば整数値1に変換 exponent ← [ a ] integerNum ← [ b ] endfor return integerNum

この設問が問うていること
2進数文字列を10進数の整数値に変換するアルゴリズムにおける、重み付けと累積の式を問う設問です。
総合解説
2進数を10進数に変換するには、最下位桁(右端)から順に 2^0, 2^1, 2^2, ... という重みを掛けて合計します。プログラムではループ変数 i が1から順に増え、binaryStr の末尾(最下位桁)から i 番目の文字を取り出しています。 ・i=1(最下位桁)のときの重みは 2^0 = 1 ・i=2(下から2桁目)のときの重みは 2^1 = 2 したがって、i番目の重みを表す exponent は 2^(i-1) となるため、aに入るのは「2の(i-1)乗」です。 次に、各桁の計算値(値 × 重み)を累積値 integerNum に合計していくため、bには「integerNum + digitNum × exponent」が入ります。したがって、正解はdです。
こんな聞き方もできます(タップで質問)