2013-03-29 24 views
7

Okazało się, że przy użyciu notacji wspornik pod numerem 100 w Ruby, otrzymuję to:Wspornik zapis na liczbach Ruby

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

więc założyć, że jest ono coraz cyfr, indeksowane tak:

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

Próbowałem tego na numer 789 z nieoczekiwanymi wynikami.

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

Spodziewam się, że powrót 9, potem 8, następnie 7 jeśli było się cyfry. Z tego rezultatu wyraźnie się nie dzieje, więc co dokładnie robi notacja nawiasowa na liczbie?

Odpowiedz

13

To są bity bitowe, które odsuwasz. Innym sposobem zobaczenia tego jest użycie to_s z argumentem wskazującym pożądaną bazę.

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

String indeksowanie jest od lewej do prawej, więc nie można porównać [] na strunie, ale należy pamiętać, w jaki sposób (od prawej do lewej) cyfry: 1, 0, 1.

Oto dokumenty, jeśli jesteś zainteresowany: http://ruby-doc.org/core-1.9.3/Fixnum.html#method-i-5B-5D

+0

Wow, naprawdę nigdy bym tego nie rozważył! Dobrze wiedzieć, dzięki! (może przyjąć w 10 minut) – Doorknob

+1

Ja też tego nie wiedziałem. Chłodny! –