※本情報は解説作成時点のもので、閲覧時点では法改正等により情報が変更になっている場合がございます。あらかじめご理解いただければ幸いです。
正解は「D.result × 2 + int(binaryのi文字目の文字)」です。
2進数を左から順に処理する場合、これまでの値を2倍してから現在の桁の値を加算します。
この記事では、基本情報技術者試験(FE)試験(令和6年度)科目Bで出題された第2問「2進数文字列を10進数に変換する関数」について、試験対策の観点からわかりやすく解説します。
Contents
2進数から10進数への変換の仕組み
result ← result × 2 + 現在の桁の値
2進数は、左の桁から順に「それまでの値を2倍して現在のビットを加える」ことで10進数に変換できます。
例えば「10010」の場合、次のように計算します。
- ((((0×2+1)×2+0)×2+0)×2+1)×2+0 = 18
なぜこの式になるのか
- 各桁は2の累乗の重みを持つ
- 左から処理すると、都度2倍することで桁上げを表現できる
- int関数で“0”または“1”を整数に変換する
したがって、for文の中では「result × 2 + int(binaryのi文字目の文字)」とするのが正しい処理です。
他の選択肢が誤りである理由
- result + int(…):2倍処理がなく桁の重みを考慮していない
- length-i+1 を用いる式:右端から処理する想定だが、本プログラムの流れと一致しない
- 加算のみの式:桁上げが反映されないため誤り
桁の重みを反映させるために「×2」の処理が不可欠です。
問われているポイント
この問題では、2進数の仕組みと繰返し処理の理解が問われています。
数値変換アルゴリズムは頻出テーマなので、処理の流れを確実に押さえておきましょう。
気を付けてほしい点(勘違いしやすいポイント)
- 「×2」を忘れると正しい値にならない
- 処理方向(左からか右からか)を問題文から読み取る
補足
進数変換は基本情報技術者試験(FE)試験で頻出です。アルゴリズムとして理解しておきましょう。
基本情報技術者試験(FE)試験での出題パターン
基本情報技術者試験(FE)試験では、文字列処理や数値変換アルゴリズムがよく出題されます。
特に2進数・16進数の変換処理は重要テーマです。
この知識が使われている問題
まとめ
- 2進数は「×2して加える」を繰り返す
- for文と整数変換処理の理解が重要