※このページには広告(PR)が含まれます

ITパスポート 令和6年度 問85 の解説テクノロジ系/アルゴリズムとプログラミング

正解はエ。2進数の下位桁からの重み(2の(i-1)乗)を表すaと、既存の累積値に各桁の値を加算するbの組み合わせであり適切です。

関数 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進数文字列を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です。

執筆・監修: はるのパパ(運営者)更新日: 2026-07-05出典: ITパスポート試験 令和6年度 問85(IPA)

アルゴリズムとプログラミングをまとめて学ぶ

アルゴリズムとプログラミング 重点教科書 →

データ構造・擬似言語・探索と整列アルゴリズム・プログラム言語・HTML/XML/JSONまで、ITパスポートのアルゴリズム分野を体系的に解説します。

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

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

令和6年度の過去問CBTを解く
PR(Amazon)

演習を続けやすい学習環境づくりに

🖥️

ノートPCスタンド(学習環境を整える)

画面の高さを目線に近づけると、姿勢が楽になります。カフェや図書館での学習にも持ち運べるタイプがあります。