令和6年度 問85 2進数を整数に変換するプログラム

問題

関数 binaryToInteger は,1桁以上の符号なし2進数を文字列で表した値を引数 binaryStr で受け取り,その値を整数に変換した結果を戻り値とする。例えば,引数として"100"を受け取ると,4を返す。プログラム中のa,bに入れる字句の適切な組合せはどれか。 〔プログラム〕

2進数の文字列を整数へ変換する関数binaryToIntegerと空欄
コードをテキストで確認
○整数型: 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
選択肢ab
ア(2のi乗)−1integerNum × digitNum × exponent
イ(2のi乗)−1integerNum + digitNum × exponent
ウ2の(i−1)乗integerNum × digitNum × exponent
エ2の(i−1)乗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

a:2の(i − 1)乗 / b:integerNum + digitNum × exponent

先に解説を見る
正解エ

a:2の(i − 1)乗 / b:integerNum + digitNum × exponent

解説

この問題のポイント

2進数は、各桁の値×その桁の重みを全て足すと整数に変換できます。右端から重みは1・2・4・8…となり、右からi番目は2^(i-1)です。右端が2⁰=1であることに注意します。

空欄に当てはめると

各桁について「桁の値×重み」を計算し、それまでの合計integerNumへ加えます。

例えば100なら、右から0×1、0×2、1×4です。

合計は0+0+4=4となります。

正解:エ

右からi番目の重みは2⁽ⁱ⁻¹⁾
右からi番目の重みは2⁽ⁱ⁻¹⁾

同じ分野の問題

関連する用語

編集・確認:kakoloop · 編集方針

公開日:

内容更新:

問題・解説の誤りを報告する

画像を拡大表示