Ruby implementiert die Grundrechenarten für ganze und Fließkommazahlen und beachtet dabei die üblichen Vorrangregeln.
1 + 2 * 3.5 #-> 8 (1 + 2) * 3.5 #-> 10.5 5 % 2 #-> 1 (Rest bei Divison) 5 / 2 #-> 2 (ganz/ganz = ganz) 5 / 2.0 #-> 2.5 5 ** 2 #-> 25 (Potenz)
Daneben gibt es noch eine Reihe von Verknüpfungen, die nur für ganze Zahlen implementiert sind:
3 << 2 #-> 12 = 3 * 2**2 23 >> 2 #-> 5 = 23 / 2**2
Ruby bietet auch die Möglichkeit, ganze Zahlen als Bitmuster zu behandeln:
# binäres und printf "%b", 0b1100 & 0b1010 #-> 1000 # binäres oder printf "%b", 0b1100 | 0b1010 #-> 1110 # binäres exklusives oder printf "%b", 0b1100 ^ 0b1010 #-> 110 # binäres Komplement printf "%b", ~ 0b110 #-> ..1001 puts ~ 1, ~ 2 #-> -2 -3 printf "%b", -1 #-> ..1
Die führenden Punkte bei der Binärdarstellung stammen daher,
dass ganze Zahlen in Ruby a priori keine maximale Größe (und damit
Bitlänge) haben, und sollen andeuten, dass "`beliebig viele"'
Ziffern 1 vorkommen. Arithmetisch kann man das Zweierkomplement
so beschreiben, dass die Summe aus Zahl und ihrem Komplement stets
-1 ergibt.
Neben der Möglichkeit, konstante Zahlen mit 0b als Binärwerte
zu kennzeichnen, kann man mit 0 die Basis 8 und mit 0x
die Basis 16 angeben.
10 #-> 10 0b10 #-> 2 010 #-> 8 0x10 #-> 16
Die entsprechenden printf-Formate für die Ausgabe lauten %d, %b,
%o und %x.
printf "%d", 10 #-> 10 printf "%b", 2 #-> 10 printf "%o", 8 #-> 10 printf "%x", 16 #-> 10