関数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」が入ります。