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


正解 エ問題へ
広告
解説
2進数の各桁と10進数は下図のように対応しています。
関数のfor文内では、引数 binaryStr の末尾から1文字ずつ順番に処理を行っていくことがわかります。設問で例として挙げられている"100"であれば、
〔aについて〕
引数の文字列を2進数とみたとき、末尾から1桁目は0(=20)、同2桁目は2(=21)、同3桁目は4(=22)となります。末尾からの位置と指数には「末尾からの位置-1=指数」の関係があるため、指数部は i-1 と表すことができます。よって、空欄aには2の(i-1)乗が当てはまります。
〔bについて〕
式中の×と+の違いだけです。戻り値である integerNum は、各桁の10進表現を合計したものであるため+が当てはまります。
したがって適切な組合せは「エ」です。

- i=1 末尾からi番目は0 ⇒ 20×0=0
- i=2 末尾からi番目は0 ⇒ 21×0=0
- i=3 末尾からi番目は1 ⇒ 22×1=4
〔aについて〕
引数の文字列を2進数とみたとき、末尾から1桁目は0(=20)、同2桁目は2(=21)、同3桁目は4(=22)となります。末尾からの位置と指数には「末尾からの位置-1=指数」の関係があるため、指数部は i-1 と表すことができます。よって、空欄aには2の(i-1)乗が当てはまります。
〔bについて〕
式中の×と+の違いだけです。戻り値である integerNum は、各桁の10進表現を合計したものであるため+が当てはまります。
したがって適切な組合せは「エ」です。
広告