Die grundlegende Idee hinter einem Stellenwertsystem

Zuerst sollte geklärt werden, was überhaupt ein Stellenwertsystem ist und was das im Bezug auf die Darstellung großer Zahlen für einen Nutzen hat. Dazu betrachten wir zunächst „normale“ Zahlen:

561 (in Worten Fünfhunderteinundsechzig)

Diese Zahl ist schon in einem Stellenwertsystem dargestellt, so wie eigentlich jede Zahl, die wir verwenden. Grund dafür ist dieser:

Wir kennen eigentlich nur die Ziffern 0-9 (das sind 10 Ziffern), aus diesen „bauen“ wir alle Zahlen zusammen. Vielleicht erinnert man sich noch an den Schulunterricht und an das 10er-System. Die Zahl 561 lässt sich nämlich auch schreiben als:

5 * 100 + 6 * 10 + 1 * 1

oder auch als

5 * 10^2 + 6 * 10^1 + 1 * 10^0

Durch die Ziffern 5,6, und 1 ist also die Zahl 561 festgelegt, ohne dass dafür 561 unterschiedliche Zeichen notwendig wären.

Dieselbe Überlegung steckt hinter dem Stellenwertsystem, mit dessen Hilfe große Zahlen am Computer dargestellt werden. Ein Computer kennt nur eine bestimmte Anzahl an Werten (vergleichbar mit den Ziffern). Wenn wir von einem 32 Bit Computer ausgehen, dann sind das 2^32 verschiedene Werte.

2 * (2^32)^2 + 3 * (2^32)^1 + 4 * (2^32)^0

2 * 2^64 + 3 * 2^32 + 4 * 2^0

Durch die Werte 2 | 3 | 4 können wir somit die Zahl 36893488160304005124 darstellen, was sonst für den Computer unmöglich wäre.

Es ist natürlich nicht notwendig, den vollen Wertebereich des Computers auszuschöpfen. Auch ein System mit „nur“ 10 Werten (Ziffern) wie wir es im Alltag gebrauchen ist dazu geeignet. Der Nachteil ist dabei nur offensichtlich. Um die Zahl 561 speichern zu können benötigt man bei einer Darstellung im 10er-System 3 Speicherstellen für die einzelnen Ziffern, während es bei dem 2^32-System nur eine Stelle wäre. Allerdings hat auch das System 2^32 auf einem 32 Bit Computer einen Haken. Um ein Stellenwertsystem einfach implementieren zu können muss es möglich sein, festzustellen, wann eine Stelle ihren maximalen Wert überstiegen hat. Ein 32 Bit Computer ist aber nicht in der Lage, festzustellen, ob eine Zahl größer als 2^32 ist. Aus diesem Grund kann man ein System mit kleinerer Basis wählen. Ein optimaler Kompromiss wäre hierbei 2^16. So ist es auch möglich, 2 Stellen miteinander zu multiplizieren, ohne dass ein Überlauf stattfindet. Es ist jedoch auch möglich, mit 32 Bit zu arbeiten. Dazu ist es nur nötig, Funktionen zu schreiben, die Überlauf-sichere Addition und Multiplikation gewährleisten.

Die Wahl der Basis sollte noch aus einem anderen Grund gut überlegt werden. Wählt man zum Beispiel eine Basis ähnlich zu 2^x, dann erleichtert das das Rechnen mit Bitoperationen (das sind eben auch Operationen, die im Binärsystem arbeiten). Schwierig, bzw aufwendig wird es mit so einer Basis allerdings, die Zahl in unserem „normalen“ 10er-System wiederzugeben. Dazu ist ein Basiswechsel notwendig, der nicht unbedingt so einfach zu berechnen ist.

Als Alternative zur Ausgabe im 10er-System ist es möglich, die Zahl im Hexadezimal-System (16 Werte) auszugeben. Das Hexadezimal-System ist ein weiteres 2^x-System (genau gesagt 2^4), weshalb eine Umwandlung trivial ist.