関数 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

なぜ違う: 重みが(2のi乗)−1では桁の位取りにならず、bも加算でなく乗算のため値が正しく積み上がらない。

イ a:(2のi乗)−1,b:integerNum + digitNum × exponent

なぜ違う: 末尾i番目の重みは2の(i-1)乗であり、(2のi乗)−1では正しい桁の重みにならない。

ウ a:2の(i−1)乗,b:integerNum × digitNum × exponent

なぜ違う: 重みは正しいが、bを乗算で更新すると初期値0のため結果が常に0になり加算にならない。

エ a:2の(i−1)乗,b:integerNum + digitNum × exponent

正解: エ

要点: 末尾からi番目は2の(i-1)乗の重み。各桁の値×重みを足し込む。

符号なし2進数の末尾から数えてi番目の桁の重みは2の(i-1)乗。各ループで digitNum×exponent を integerNum に加算していけば10進整数になる。よって a は「2の(i-1)乗」、b は「integerNum + digitNum × exponent」。

この問題に出てくる用語

関連キーワード: 擬似言語・基数変換・アルゴリズム

同じ回の前後の問題

テクノロジ系の他の問題

アプリで弱点分析つきの演習ができます

App Store

ITパスポートの学習アプリ(ITパストレ)

出典:令和6年度 ITパスポート試験 公開問題 問85