関数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進数の各桁に2の累乗の重みを掛けて足し合わせる
| a | b | |
|---|---|---|
| ア | (2のi乗)-1 | integerNum × digitNum × exponent |
| イ | (2のi乗)-1 | integerNum + digitNum × exponent |
| ウ | 2の(i-1)乗 | integerNum × digitNum × exponent |
| エ | 2の(i-1)乗 | 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
正解と解説
正解:エ a:2の(i-1)乗 b:integerNum + digitNum × exponent
2進数の末尾からi番目の桁の重みは2の(i−1)乗です。各桁の数字にその重みを掛けた値を順に足し合わせれば10進数になるため、aには2の(i−1)乗、bには累計に掛け算の結果を加える式が入ります。掛け算で累積すると初期値0のまま変化しないため誤りです。
選択肢ごとの解説
- ア重みの式が誤っているうえ、累積を掛け算にしているため常に0になります。
- イ重みの式が誤っており、末尾からi番目の桁の重みになりません。
- ウ累積を掛け算にしているため、初期値0のまま結果が0になります。
- エ桁の重みが2の(i−1)乗で、累計に加算していく正しい組合せです。
同じ分野の他の問題
- 関数isPrimeは、引数として与えられた正の整数が、素数であればtrueを、素数でなければfalseを戻り値とする。例…2026年度 秋期 問85
- 関数calculateAmountOfPrizeは、業務改善の効果における改善額と短縮期間を、それぞれimproveme…2025年度 秋期 問99
- 手続calcMod3を呼び出したときの出力はどれか。 〔プログラム〕 ○calcMod3() 整数型: totalVal…2025年度 秋期 問78
- 関数convertは、整数型の配列を一定のルールで文字列に変換するプログラムである。関数convertをconvert(…2024年度 秋期 問62
- 関数sigmaは、正の整数を引数maxで受け取り、1からmaxまでの整数の総和を戻り値とする。プログラム中のaに入れる字…2023年度 秋期 問64
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。