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進数の文字列を整数に変換するために、各ビットの値を計算します。

選択肢4. a:2の(i−1乗)  b:integerNum + digitNum ✕ exponent

二進数から整数への変換の説明

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 になります。

参考になった数3

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 です。

選択肢1. a:(2のi乗)−1  b:integerNum ✕ digitNum ✕ exponent

a (2のi乗)−1 の重みは2進数の重みになりません。

b 各桁の値を integerNum に掛けてしまうと正しい数値になりません。

選択肢2. a:(2のi乗)−1  b:integerNum + digitNum ✕ exponent

a (2のi乗)−1 の重みは2進数の重みになりません。

選択肢3. a:2の(i−1乗)  b:integerNum ✕ digitNum ✕ exponent

b 各桁の値を integerNum に掛けてしまうと正しい数値になりません。

選択肢4. a:2の(i−1乗)  b:integerNum + digitNum ✕ exponent

正解です。

参考になった数1

03

このプログラムは、2進数の文字列を整数に変換するために設計されています。

選択肢1. a:(2のi乗)−1  b:integerNum ✕ digitNum ✕ exponent

不正解です。

選択肢2. a:(2のi乗)−1  b:integerNum + digitNum ✕ exponent

不正解です。

選択肢3. a:2の(i−1乗)  b:integerNum ✕ digitNum ✕ exponent

不正解です。

選択肢4. a:2の(i−1乗)  b:integerNum + digitNum ✕ exponent

正解です。

まとめ

このプログラムは、2進数の文字列を整数に変換するためのものです。各桁の2進数を右から順に確認し、それぞれの桁に対応する2の累乗を計算して、合計していくことで10進数の値を求めます。

参考になった数0