問題
関数binaryToIntegerは、1桁以上の符号なし2進数を文字列で表した値を引数binaryStrで受け取り、その値を整数に変換した結果を戻り値とする。例えば、引数として"100"を受け取ると、4を返す。プログラム中のa、bに入れる字句の適切な組合せはどれか。 〔プログラム〕 ○整数型: binaryToInteger(文字列型: binaryStr) 整数型: integerNum, digitNum, exponent, i integerNum ← 0 for (i を 1 から binaryStr の文字数 まで 1 ずつ増やす) digitNum ← binaryStrの末尾から i 番目の文字を整数型に変換した値 exponent ← a integerNum ← b endfor return integerNum
選択肢
- 1a: (2 の i 乗) − 1、b: integerNum × digitNum × exponent
- 2a: (2 の i 乗) − 1、b: integerNum + digitNum × exponent
- 3a: 2 の (i − 1) 乗、b: integerNum × digitNum × exponent
- 4a: 2 の (i − 1) 乗、b: integerNum + digitNum × exponent
正解
4. a: 2 の (i − 1) 乗、b: integerNum + digitNum × exponent
詳しい解説を見る解説を閉じる
解説
2進数を10進数に変換するには、末尾からi番目の桁の値に2の(i-1)乗を掛けて合計する。例えば"100"なら末尾から順に0×2⁰+0×2¹+1×2²=4となる。よってaは2の(i-1)乗、bは累積加算でintegerNum+digitNum×exponentとなり、正解はエ。アとイのaは2のi乗-1なので桁の重みが合わず誤り。ウのbは累積を掛け算しており、初期値0のままとなり誤り。(出典: 令和6年度分 ITパスポート試験 問85)
記憶定着問題
全200問を繰り返し学習