Computerhardware: Zahlensysteme
Ein Zahlensystem dient dazu, Zahlen – vor allem große Zahlen – einfach und übersichtlich darzustellen. Außerdem soll es möglichst einfach sein, mit den Zahlen zu rechnen.
Alle Zahlensysteme funktionieren nach dem gleichen Prinzip: Eine bestimmte Anzahl von Ziffern, deren Wert sich aufsteigend immer um 1 erhöht, mit der Null als kleinstwertigster Ziffer, gibt vor, wie viele Zustände eine einstellige Zahl darstellen kann, d.h. wie weit man Zählen kann, ohne eine zweite Stelle benutzen zu müssen. Die Benennung des jeweiligen Zahlensystems orientiert sich an der Anzahl der zur Verfügung stehenden Ziffern (Dezimalsystem – zehn Ziffern, Binärsystem – zwei Ziffern, Hexadezimalsystem – sechzehn Ziffern usw.). Bei einem beliebigen Zahlensystem mit n verschiedenen Ziffern ist der Wert der höchstwertigen Ziffer n-1 (Dezimalsystem: Zehn Ziffern, höchster Wert 9). Beim Lesen einer einstelligen Zahl, gleich welchen Zahlensystems, gilt: Wert der Ziffer*n0. Dabei ist zu beachten, dass eine Potenz mit beliebiger Basis und dem Exponenten 0 den Wert 1 hat.
Möchte man Zahlen darstellen, deren Betrag größer ist als n-1, also die höchstwertige Ziffer, muss eine weitere Stelle hinzugefügt werden. Im Dezimalsystem sieht das so aus: 9 + 1 = 10
Das wussten wir schon, trotzdem steckt in dieser Gleichung eine Erkenntnis, die das Verständnis aller anderen Zahlensysteme ungemein vereinfacht: Überschreitet der darzustellende Betrag den Wert (n-1) * n0 (in diesem Fall 9 * 100 = 9), beginnt die neu geschaffene Stelle mit der Ziffer 1, deren Wert jetzt mit n1 multipliziert wird. Die Zahl 10 im Dezimalsystem liest sich also folgendermaßen:
10 = 1*101 + 0*100
Für jede weitere Stelle erhöht sich der Exponent über der Basis n um 1. Damit lässt sich jede natürliche Zahl darstellen. Die Benutzung des Dezimalsystems ist uns so geläufig, dass wir darüber nicht nachdenken müssen, mit dem Wissen um diese Zusammenhänge aber können wir jetzt ganz direkt in die digitale Welt eintauchen und verstehen, wie der Computer rechnet. Denn der Computer kennt nur die Ziffern 1 und 0, er arbeitet also im Binärsystem. Das ist so, weil es für eine Maschine leichter ist, zwischen einem offenen und einem geschlossenen Schalter zu unterscheiden als zwischen vielen Ziffern zu differenzieren. Dies hat seinen Ursprung in den Überlegungen des Gottfried Wilhelm Leibniz, seine Ursache in der Natur der elektronischen Bauteile, dazu aber mehr im nächsten Abschnitt. Wenn wir uns jetzt noch einmal die Zahl 10 ansehen, diesmal aber unter der Voraussetzung, dass es sich um eine Zahl aus dem Binärsystem handele (und durch die tief gestellte 2 als solche gekennzeichnet), kommen wir zu folgendem Ergebnis:
102 = 1*21 + 0*20 = 2 Es offenbart sich also auf den ersten Blick, dass ein Wert 2, der im Dezimalsystem durch eine vergleichsweise geringwertige Ziffer und mit einer einzigen Stelle dargestellt werden kann, im Binärsystem schon mehrstellig wird. Im Allgemeinen gilt: Je höher die Anzahl der zur Verfügung stehenden Ziffern, desto weniger Stellen werden für große Zahlen benötigt. Die einzelne Binäre Stelle (engl. Binary Digit) ist übrigens im EDV-Sprachgebrauch ein Bit. Eine Gruppe aus acht Bit nennt man Byte und stellt die kleinste adressierbare Speichereinheit dar. Ein weiteres Zahlensystem, das in der EDV, speziell in der Programmierung, häufig verwendet wird, ist das Hexadezimalsystem, das mit sechzehn Ziffern arbeitet. Für die Werte von 0 bis 9 werden die üblichen arabischen Ziffern verwendet, für die Werte von 10 bis 15 stehen die Buchstaben A bis F. Eine gängige Kennzeichnung für Hexadezimalzahlen ist das vorangestellte Doppelkreuz (#). Sehen wir uns eine Hexadezimalzahl an:
- A9 = 10*161 + 9*160 = 169
Wir sehen also bestätigt, dass durch den Zugewinn an Ziffern die Zahl weniger Stellen benötigt. Aber warum gerade das Hexadezimalsystem so geeignet für Programmierer ist, sehen wir weiter unten. Weil Binärzahlen aber sehr lang und deshalb schwer zu merken und zu schreiben sind, benutzt man hilfsweise auch noch das Hexadezimalsystem, seltener auch das Oktalsystem. Gerade das Hexadezimalsystem bietet große Vorteile im Umgang mit Zahlen am Computer. Ein Byte besteht per Definition aus acht Bit, ist also eine achtstellige Binärzahl. Der höchstmögliche Wert, den ein Byte darstellen kann, ist 255; der niedrigste ist 0. Ein Byte kann also 256 verschiedene Zustände annehmen (256 = 28). Das Hexadezimalsystem besteht aus sechzehn Ziffern (16 = 24; anders ausgedrückt: Jede hexadezimale Stelle entspricht einer vierstelligen Binärzahl). Daraus ergibt sich für eine zweistellige Hexadezimalzahl ebenfalls der höchstmögliche Wert 255 (#FF). Dieser Umstand lässt es für den Programmierer zu, Zahlen in einer überschaubaren Länge zu verwenden, die der Rechner sehr direkt und ohne Überhangverluste in seine Sprache, das Binärsystem, umrechnen kann. Wollte man statt des Binär- oder Hexadezimalsystems lieber mit dem Dezimalsystem arbeiten, hätte der Computer für die Umrechnung wesentlich mehr Arbeit: Zur Darstellung von 256 verschiedenen Werten braucht das Dezimalsystem drei Stellen. Es könnte aber mit diesen drei Stellen tatsächlich Werte bis 999 darstellen. Es kommt also zu einem ungenutzten Überhang (der Bereich 256-999) und außerdem einer zusätzlichen Stelle, die verarbeitet werden muss. Heute fallen diese Verluste kaum mehr ins Gewicht, waren aber zu der Zeit, als die Technik entwickelt wurde, durchaus ernst zu nehmen. Die Kenntnis der binären, oktalen und hexadezimalen Zahlensysteme ist neben der Programmierung auch nützlich, weil diese oft in technischen Anleitungen, Fehlermeldungen, Spieletipps (Cheats) und anderen Unterlagen verwendet werden.