p sprintf("%#b", 20)
Q.出力結果は何か?
sprintfは与えられた引数を指定の文字列に返すメソッド
sprintf( "フォーマット", 戻したい値 )
そして、
“#%b”の部分は以下の記述を参考に計算します。
2進、8進、16進の指示子(b, B, o, x, X) ではそれぞれプレフィックスとして "0b", "0B", "0", "0x", "0X" を付加します。 C 言語と同様引数が 0 の場合にはプレフィックスが付加されません。
💡 2進、8進、16進の指示子(b, B, o, x, X) ではそれぞれプレフィックスとして "0b", "0B", "0", "0x", "0X" を付加します。 C 言語と同様引数が 0 の場合にはプレフィックスが付加されません。p sprintf("%#b", 10)#=> "0b1010"
p sprintf("%#B", 10)#=> "0B1010"
p sprintf("%#b", 0)#=> "0"
p sprintf("%#o", 10)#=> "012"
p sprintf("%#x", 10)#=> "0xa"
p sprintf("%#X", 10)#=> "0XA"
引用元:https://docs.ruby-lang.org/ja/latest/doc/print_format.html
つまり、%#の次の文字がb,Bなら2進数、oなら10進数、x,Xなら16新数に第2引数を直して欲しいという問題です。
今回は、”%#”の次の文字はbなので、先頭に「0b」をつけて20を2進数に直します。
引用元:https://medium-company.com/2進数/
のように計算するため、20は2進数で、10100となる。
なので、0bに20を2進数で表した「10100」をつなげた
0b10100が答えとなる。
💡 A.0b10100