2013-03-29 61 views
7

我發現,在Ruby中使用上的數字100括號標記的時候,我得到這個:括號標記

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如果它得到的數字。從這個結果來看,這顯然沒有發生,那麼在數字上使用括號符號究竟做了什麼呢?

回答

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

+0

哇,我真的會*永遠*甚至沒有考慮過這個!很高興知道,謝謝! (可以在10分鐘內接受) – Doorknob

+1

我也不知道這一點。涼! –