ITパスポート試験 令和6年度分 解説

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

ア a: (2のi乗) - 1, b: integer Num X digitNum X exponent
イ a: (2のi乗) - 1, b: integerNum + digitNum X exponent
ウ a: 2の(i-1)乗, b: integerNum X digitNum X exponent
エ a: 2の(i-1)乗, b: integer Num + digitNum X exponent

解説

この問題は、2進数の文字列を整数に変換するアルゴリズムにおいて、適切な処理を選択する問題です。プログラムは、各桁の2進数をその桁の重み(2のべき乗)を掛けて加算することで、2進数を10進数に変換しています。

以下に、各変数の意味を説明します:

プログラムの要件に基づき、以下のように処理する必要があります:

これにより、「a: 2の(i-1)乗」、「b: integerNum + digitNum × exponent」の組み合わせが適切です。

したがって、正解は「エ a: 2の(i-1)乗, b: integer Num + digitNum × exponent」です。