1.1.1 Zahlendarstellungen und der Euklid’sche Algorithmus
Wir wollen uns hier kurz mit der Darstellung von Zahlen auseinandersetzen und uns anschauen, wie wir aus dem Dezimalsystem in ein beliebiges anderes Zahlensystem wechseln können. Hierbei hilft uns der Euklid’sche Algorithmus weiter. Zuerst einmal sollten wir uns klar machen, dass wir in der Regel mit Stellenwertsystemen arbeiten. Das bedeutet, dass die Wertigkeit einer Ziffer von ihrer Position innerhalb einer Zahl abhängt. Es existieren natürlich auch Darstellungen von Zahlen, wo dies nicht so ist, z.B. bei den römischen Zahlen, dies ist aber nur eine Erwähnung am Rande. Wenn wir also beispielsweise die Zahl 123 in unserem gewohnten Zehnersystem (Basis 10) niederschreiben, dann meinen wir eigentlich
(1.1)
Nun rechnen wir wohl bedingt durch die Anzahl unserer Finger eben gerne mit der Basis 10. Der Computer bevorzugt aber das Binärsystem (Basis 2) oder das Hexadezimalsystem (Basis 16). Wie wechseln wir in diese (oder auch beliebige andere) Zahlensysteme, d.h. wie sieht die Darstellung unserer Zahl (hier 123) eben bezüglich der neuen Basen aus? Hier hilft uns der Euklid’sche Algorithmus weiter, den wir beispielhaft für ein paar Zahlen demonstrieren wollen. Es handelt sich eigentlich nur um eine fortgesetzte Division mit Rest. Tätigen wir vorab ein paar Überlegungen, die uns gleich weiterhelfen werden. Nehmen wir die Zahl 123 und teilen sie durch 10, dann erhalten wir 123 = 12 · 10 + 3, also die für uns nicht sehr überraschende Erkenntnis, dass die 10 zwölfmal in die 123 passt und 3 als Rest übrig bleibt, also Rest R1 = 3. Nehmen wir nun die 12 und dividieren diese durch 10, dann folgt 12 = 1 · 10 + 2, womit wir R2 = 2 erhalten. Letztendlich stellen wir fest, dass 1 = 0 · 10 + 1 ist, also R3 = 1 gilt. Betrachten wir die Reste, so erkennen wir, dass (R3R2R1) = 123 ist, womit wir in den Resten unsere Ziffern für die einzelnen Stellen der Zahl finden. Diese Erkenntnis lässt sich auf beliebige Zahlen übertragen, was bedeutet, dass wir nur den Divisor (hier war es die Zahl 10) auszutauschen haben und durch die neue Basis (z.B. 2 oder 16 oder ...) ersetzen. Beginnen wir mit der Basis b = 2, wandeln also unsere 123 aus der Darstellung im Zehnersystem in eine im Binärsystem um. Es folgt:
123 : 2 = 61 | R1 = 1 |
61 : 2 = 30 | R2 = 1 |
30 : 2 = 15 | R3 = 0 |
15 : 2 = 7 | R4 = 1 |
7 : 2 = 3 | R5 = 1 |
3 : 2 = 1 | R6 = 1 |
1 : 2 = 0 | R7 = 1 |
Der Algorithmus terminiert, wenn die Basis nicht mehr in die zuletzt zu teilende Zahl (Dividend) passt. Aus der Rechnung schließen wir, dass (123)10 = (1111011)2 gilt, wobei wir die Reste, wie bereits demonstriert, von unten nach oben zu lesen haben. Die an der Stelle mit der höchsten Wertigkeit stehende Ziffer hält sich bei der Division am längsten. Auch bei der Basis b = 16 klappt unser Spielchen.
123 : 16 = 7 | R1 = 11 |
7 : 16 = 0 | R2 = 7 |
Hier kommen wir im Vergleich zur Basis 2 sehr schnell zu einem Ende und stellen fest, dass (123)10 = (7(11))16 gilt. Die doppelte 1 bietet sich aber nicht sonderlich gut als Symbol für eine Ziffer an. Umfasst unser sogenannter Ziffernvorrat bei der Basis 2 nur die Ziffern 0 und 1, so haben wir bei der Basis 10 die Ziffern 0 bis 9 zur Verwendung freigegeben. Bei der Basis 16 müssen es daher 16 Ziffern sein, nämlich 0 bis 9 und noch sechs weitere, die die möglichen Reste (10) bis (15) bei der Division abdecken. Hierfür wählt man die Buchstaben A, B, C, D, E und F. Dadurch erhalten wir (123)10 = (7B)16. Wir können leicht nachrechnen, dass
wobei die 123 dann wieder im Zehnersystem zu verstehen ist. Durch die nahe Verwandtschaft der Basen 2 und 16 (24 = 16) lassen sich Zahlen aus der einen Darstellung auch recht schnell blockweise in die andere überführen, ohne den Euklid im Zehner- oder einem anderen Zahlensystem bemühen zu müssen. Man stellt leicht die Zusammenhänge in der Tabelle 1.1 fest. Damit lässt sich z.B. aus (123)10 = (1111011)2 durch das Ergänzen einer führenden 0, die nichts am Wert ändert, die Hexadezimaldarstellung aus der Tabelle ablesen. Es ist
Tab. 1.1:Die ersten 16 Zahlen, dargestellt...