LoginSignup
0
0

Ruby2.1技術者認定試験 Silver(sprint問題解説)

Posted at
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進数に直します。

image.png

引用元:https://medium-company.com/2進数/

のように計算するため、20は2進数で、10100となる。

なので、0bに20を2進数で表した「10100」をつなげた

0b10100が答えとなる。

💡 A.0b10100
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0