関数 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- アa: (2 の i乗) - 1 b: integerNum × digitNum × exponent
- イa: (2 の i乗) - 1 b: integerNum + digitNum × exponent
- ウa: 2 の (i - 1) 乗 b: integerNum × digitNum × exponent
- エa: 2 の (i - 1) 乗 b: integerNum + digitNum × exponent
正解と解説を見る
正解
エ a: 2 の (i - 1) 乗 b: integerNum + digitNum × exponent
2進数の各桁は、末尾(最下位)から数えてi番目の桁が2の(i-1)乗の重みを持つため、aには「2 の (i-1) 乗」が入ります。また各桁の値(digitNum)にその桁の重み(exponent)を掛けた値を積算していくので、bには掛け算した値を足し込む「integerNum + digitNum × exponent」が入ります。