ITパスポートの過去問
令和6年度
テクノロジ系 問30
このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。
問題
令和6年度 ITパスポート試験 テクノロジ系 問30 (訂正依頼・報告はこちら)
関数 binaryToInteger は、1桁以上の符号なし2進数を文字列で表した値を引数 binaryStr で受け取り、その値を整数に変換した結果を戻り値とする。例えば、引数として「100」を受け取ると、4を返す。プログラム中の a,b に入れる字句の適切な組合せはどれか。
- a:(2のi乗)−1 b:integerNum ✕ digitNum ✕ exponent
- a:(2のi乗)−1 b:integerNum + digitNum ✕ exponent
- a:2の(i−1乗) b:integerNum ✕ digitNum ✕ exponent
- a:2の(i−1乗) b:integerNum + digitNum ✕ exponent
正解!素晴らしいです
残念...
この過去問の解説 (3件)
01
問題の内容に基づいて、関数 binaryToInteger がどのように動作するかを考えます。この関数は、与えられた符号なし2進数の文字列を整数に変換するために、各ビットの値を計算します。
二進数から整数への変換の説明
2進数の各桁は、右から左へ向かって2の累乗で重み付けされます。
例えば、2進数の文字列「100」は以下のように計算されます:
1 * 2² + 0 * 2¹ + 0 * 2⁰ = 4 + 0 + 0 = 4
プログラムの構造
binaryStr の長さ(桁数)を digitNum とします。
各ビットの位置(右から左)を i とし、最も右のビットは0とします(最上位ビットは digitNum - 1)。
整数値は、次のように計算されます:
integerNum は、各桁のビット値(0または1)。
exponent は、2のi乗の値です。
適切な組合せの選定
a には2の(i−1乗)を入れ、これは各ビットに対する正しい重み付けを示しています。
b には integerNum + digitNum ✕ exponent を使います。ここでは、各桁の値を足し合わせることを意味しています。
したがって、正しい組合せは a:2の(i−1乗) b:integerNum + digitNum ✕ exponent になります。
参考になった数2
この解説の修正を提案する
02
関数 binaryToInteger は2進数の引数 binaryStr を下の桁から順に変数 digitNum に格納し、10進数の整数に変換する処理を行っています。
2進数は下の桁から順に20、21、22、23、…と重みがあります。
例えば、2進数「100」の場合、下の桁から順に10進数に変換していくと
0 × 20 + 0 × 21 + 1 × 22
= 0 × 1 + 0 × 2 + 1 × 4
= 0 + 0 + 4 = 4 となります。
関数 binaryToInteger では重みを変数 exponent に格納しているので、 a は2の(i−1乗) です。
変数 integerNum で重みづけをした値を計算するので、 b は integerNum + digitNum ✕ exponent です。
a (2のi乗)−1 の重みは2進数の重みになりません。
b 各桁の値を integerNum に掛けてしまうと正しい数値になりません。
a (2のi乗)−1 の重みは2進数の重みになりません。
b 各桁の値を integerNum に掛けてしまうと正しい数値になりません。
正解です。
参考になった数1
この解説の修正を提案する
03
このプログラムは、2進数の文字列を整数に変換するために設計されています。
不正解です。
不正解です。
不正解です。
正解です。
このプログラムは、2進数の文字列を整数に変換するためのものです。各桁の2進数を右から順に確認し、それぞれの桁に対応する2の累乗を計算して、合計していくことで10進数の値を求めます。
参考になった数0
この解説の修正を提案する
前の問題(問29)へ
令和6年度問題一覧
次の問題(問31)へ