この概念が出た関連問題

この試験の対策ガイド

ITパスポート試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は エ

解説

この問題は2進数の文字列を10進数の整数に変換するアルゴリズムについての問題です。2進数「100」を例にとると、右から順に2⁰=1の位、2¹=2の位、2²=4の位となり、1×0 + 2×0 + 4×1 = 4 となります。プログラムでは、文字列の末尾から1文字ずつ処理し、その桁の値(0か1)に対して、その位の重み(2のべき乗)を掛けて累積していきます。正解のエの組み合わせでは、exponentに2の(i-1)乗を設定し(各桁の重みを表現)、integerNumに前の桁までの累積値とdigitNum(現在の桁の0か1)×exponent(その桁の重み)を加算することで、正しく2進数を10進数に変換できます。

なぜ他の選択肢は違うのか

選択肢 ア
「(2のi乗)-1」は各桁の重みとして不適切です。例えば i=2 の時、2²-1=3となり、4の位を表現すべき場所で3という誤った重みを使うことになります。
選択肢 イ
掛け算(×)を使用すると、前の桁までの計算結果(integerNum)に対して不適切な乗算を行うことになり、正しい10進数値が得られません。
選択肢 ウ
「2の(i-1)乗」は正しい重みの計算式ですが、掛け算(×)を使用することで累積値の計算が不適切になります。加算(+)を使用する必要があります。

解くときのポイント

2進数から10進数への変換を理解するには、位取りの考え方が重要です。例えば「101」なら、1×2² + 0×2¹ + 1×2⁰ = 4 + 0 + 1 = 5 というように、各桁の値とその位の重み(2のべき乗)の積の総和を考えます。プログラムでは、この計算を右から左へ1桁ずつ進めていきます。