
基本情報技術者試験 令和6年度 公開問題 科目B、全6問のうちの問2。
出典:令和6年度 基本情報技術者試験 公開問題 科目B 問2(プログラムは原本の画像を文字に書き起こし、字下げは 1 段を空白 2 つで表した。空欄は[ ]で表した)
次の
関数 convDecimal は,
関数 convDecimal が
○整数型: convDecimal(文字列型: binary)整数型: i, length, result ← 0length ← binaryの文字数for (i を 1 から length まで 1 ずつ増やす)result ← [ ]endforreturn result
- アresult + int(binary の
(length - i + 1)文字目の文字) - イresult + int(binary の
i文字目の文字) - ウresult × 2 + int(binary の
(length - i + 1)文字目の文字) - エresult × 2 + int(binary の
i文字目の文字)
答えと解説を開く
正解はエです。
2 進数では、
ほかの選択肢が違う理由
- ア2 倍していないので、
各桁の 0 と 1 を 足すだけです。 “10010” では 1 の 個数の 2 が 返ります。 - イアと
同じく 2 倍していないので、 1 の 個数を 数えるだけです。 “10010” では 2 が 返ります。 - ウ2 倍は
していますが、 右の 桁から 読んでいます。 左から 読む形の 式に 右から 文字を 渡すので、 文字列を 逆に 読んだ “01001” の 値に なります。 0、 1、 2、 4、 9 と 進み、 9 が 返ります。
仕組み
この
右の