85の正解: テクノロジ系アルゴリズムとプログラミング

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

問85の図

この設問が問うていること

2進数文字列を10進数の整数値に変換するアルゴリズムにおける、重み付けと累積の式を問う設問です。

a=(2のi乗)-1, b=integerNum × digitNum × exponent
選択肢の解説: 指数の値および累積方法(積算になっている点)が共に誤りです。
a=(2のi乗)-1, b=integerNum + digitNum × exponent
選択肢の解説: 重みの指数部分(a)の計算式が「2のi乗 - 1」となっており誤りです。
a=2の(i-1)乗, b=integerNum × digitNum × exponent
選択肢の解説: 累積計算式(b)において、既存の累積値(integerNum)に対して積算を行っているため誤りです。
a=2の(i-1)乗, b=integerNum + digitNum × exponent正解
選択肢の解説: 2進数の下位桁からの重み(2の(i-1)乗)を表すaと、既存の累積値に各桁の値を加算するbの組み合わせであり適切です。

総合解説

2進数を10進数に変換するには、最下位桁(右端)から順に 2^0, 2^1, 2^2, ... という重みを掛けて合計します。プログラムではループ変数 i が1から順に増え、binaryStr の末尾(最下位桁)から i 番目の文字を取り出しています。 ・i=1(最下位桁)のときの重みは 2^0 = 1 ・i=2(下から2桁目)のときの重みは 2^1 = 2 したがって、i番目の重みを表す exponent は 2^(i-1) となるため、aに入るのは「2の(i-1)乗」です。 次に、各桁の計算値(値 × 重み)を累積値 integerNum に合計していくため、bには「integerNum + digitNum × exponent」が入ります。したがって、正解はdです。

執筆・監修: 運営者 KH更新日: 2026-07-05出典: IPA公式PDF(過去問題・解答例)
AIAIにその場で質問(デモ応答)

こんな聞き方もできます(タップで質問)

令和6年度を本番同様のCBT形式で解いてみよう

無料登録なしでも一部体験可能。登録すれば採点・弱点分析・AI教科書まで使えます。

令和6年度の過去問CBTを解く