next up previous contents index
Search Next: Das Math-Modul Up: Ruby als Zahlenjongleur Previous: Ganze und Fließkommazahlen   Contents   Index

Rechenoperatoren

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


\epsfig{height=36pt,file=images/chan.eps}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. \epsfig{height=10pt,file=images/ruby.eps}

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



(C) 2002 by dpunkt.de, Armin Roehrl, Stefan Schmiedl, Clemens Wyss 2002-01-20