令和6年科目B問2 2進数文字列を整数型10進数に変換する
今回は、令和6年度科目B公開問題問2について調査したいと思います。
前提として、lengthには10010の文字数「5」が入ります。resultの初期値は0です。
関数convDecimalは翻訳すると、「変換10進数」。
つまり、「10進数の変換」となります。
今回2進数「10010」を10進数「18」に変換します。
アから早速見て行きましょう。
アは、result + int (binaryの(length - i + 1)文字目の文字)となっています。
※binaryは10010が入っています。
i=1のとき
r=0+int(5-1+1)
※binaryの5文字目の0
=0+0=0
i=2のとき
r=0+int(5-2+1)
※binaryの4文字目の1
=0+1=1
i=3のとき
r=1+int(5-3+1)
※binaryの3文字目の0
=1+0=1
i=4のとき
=1+int(5-4+1)
※binaryの2文字目の0
=1+0=1
i=5のとき
=1+int(5-5+1)
※binaryの1文字目の1
=1+1=2
アは、2という結果になりました。18の答えではないため、アは不正解です。
イを見てみます。
result + int (binary のi文字目の文字)となっています。
i=1
0+binaryの1文字目
0+0=0
i=2
0+binaryの2文字目
0+1=1
i=3
0+binaryの3文字目
1+0=1
i=4
0+binaryの4文字目
1+0=1
i=5
0+binaryの5文字目
1+1=2
イもアと同様の結果となりました。
続いてウです。
result × 2 + int (binaryの(length - i + 1)文字目の文字)
検証していきます。
i=1
0×2+int(5-1+1)
0+0=0
i=2
0×2+int(5-4+1)
0+1=1
i=3
1×2+int(5-3+1)
2+0=2
i=4
2×2+int(5-2+1)
4+0=4
i=5
4×2+int(5-1+1)
8+1=9
ウは9の結果となりました。
答えの18と違うため間違いです。
最後にエをやっていきます。
result x 2 + int (binary のi文字目の文字)
i=1
0×2+1=1
i=2
1×2+0=2
i=3
2×2+0=4
i=4
4×2+1=9
i=5
9×2+0=18
エは、18となりました。
よって答えはエが正解になります。
IPA 公開問題(問題冊子・解答例)
https://www.ipa.go.jp/shiken/mondai-kaiotu/sg_fe/koukai/2024r06.html