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
[プログラム]
○整数型: 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進数に変換しています。
以下に、各変数の意味を説明します:
- digitNum:現在処理している桁の2進数の値(0または1)
- exponent:2のべき乗を保持する変数。位置iに応じて重みを計算します。
- integerNum:計算された10進数の結果を保持します。
プログラムの要件に基づき、以下のように処理する必要があります:
- aに当たる式:2進数の桁位置iに応じて「2の(i-1)乗」で重みを計算します。
- bに当たる式:計算結果integerNumに、現在の桁の値(digitNum)と重み(exponent)を掛け合わせた値を加算します。
これにより、「a: 2の(i-1)乗」、「b: integerNum + digitNum × exponent」の組み合わせが適切です。
したがって、正解は「エ a: 2の(i-1)乗, b: integer Num + digitNum × exponent」です。