7

100Rubyで数字にブラケット表記を使用すると、次のようになることがわかりました。

irb(main):001:0> 100[0]
=> 0
irb(main):002:0> 100[1]
=> 0
irb(main):003:0> 100[2]
=> 1

したがって、次のようにインデックス付けされた数字を取得していると想定しました。

NUMBER: 1|0|0
        -----
INDEX:  2|1|0

789予想外の結果で番号でこれを試しました。

irb(main):004:0> 789[0]
=> 1
irb(main):005:0> 789[1]
=> 0
irb(main):006:0> 789[2]
=> 1

数字を取得している場合は、 9、次に8、そしてを返すと思います。7この結果から、それが起こっていないことは明らかですが、数値にブラケット表記を使用すると、正確には何が行われるのでしょうか?

4

1 に答える 1

13

これらは、引き離しているバイナリ ビットです。これを確認する別の方法はto_s、目的のベースを示す引数を使用することです。

>> 789.to_s(2)
=> "1100010101"

文字列のインデックスは左から右に付けられるため、文字列を比較することはできませんが[]、(右から左に) 数字が 1、0、1 であることに注意してください。

興味のある方はこちらのドキュメントをご覧ください: http://ruby-doc.org/core-1.9.3/Fixnum.html#method-i-5B-5D

于 2013-03-29T00:18:34.847 に答える