令和6年 問85
関数binaryToInteger は、1桁以上の符号なし2進数を文字列で表した値を引数binaryStrで受け取り、その値を整数に変換した結果を戻り値とする。例えば、引数として“100”を受け取ると、4を返す。プログラム中のa、bに入れる字句の適切な組合せはどれか。
プログラムが切れて表示される場合、横にスクロールすると表示されます。
〔プログラム〕 |
〇整数型: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 |
a | b | |
ア | (2のi乗)-1 | integerNum × digitNum × exponent |
イ | (2のi乗)-1 | integerNum + digitNum × exponent |
ウ | 2の(i-1)乗 | integerNum × digitNum × exponent |
エ | 2の(i-1)乗 | integerNum + digitNum × exponent |
プログラムが切れて表示される場合、横にスクロールすると表示されます。
正解の理由(令和6年 問85)
2進数から10進数への変換
2進数は、以下のように10進数に変換できます。
2進数 | → | 10進数 |
---|---|---|
0 | 22×0 + 21×0 + 20×0 | 0 |
1 | 22×0 + 21×0 + 20×1 | 1 |
10 | 22×0 + 21×1 + 20×0 | 2 |
11 | 22×0 + 21×1 + 20×1 | 3 |
(問題の例) 100 | 22×1 + 21×0 + 20×0 | 4 |
101 | 22×1 + 21×0 + 20×1 | 5 |
110 | 22×1 + 21×1 + 20×0 | 6 |
111 | 22×1 + 21×1 + 20×1 | 7 |
a の選択肢について
a は、
(2のi乗-1)
2の(i-1)乗
のどちらかです。
問題にある「100」の例に、それぞれ当てはまるか確認します。
よって、a には、2の(i-1)乗 があてはまります。
b の選択肢について
b は、
integerNum × digitNum × exponent
integerNum + digitNum × exponent
のどちらかです。
問題にある「100」の例に、それぞれ当てはまるか確認します。
よって、b には、integerNum + digitNum × exponent があてはまります。
解答
a が 2の(i-1)乗
b が integerNum + digitNum × exponent なので
正解は エ です。
コメント