Zahlenbasen (auch Radixe genannt) definieren, wie viele eindeutige Ziffernsymbole in einem Positionszahlensystem verwendet werden – Menschen verwenden die Basis 10 (dezimal, Ziffern 0–9) fast ausschließlich für die tägliche Arithmetik, aber Computer arbeiten intern mit der Basis 2 (binär, Ziffern 0 und 1), Programmierer lesen Speicheradressen in der Basis 16 (hexadezimal, Ziffern 0–9 und A–F) und Unix-Dateiberechtigungen werden traditionell in der Basis 8 ausgedrückt (oktal). Das Konvertieren zwischen Basen ist für die Informatik, die eingebettete Programmierung und die digitale Elektronik von grundlegender Bedeutung. In den folgenden Abschnitten wird erläutert, warum es verschiedene Basen gibt und wann jede verwendet wird, wie die Positionsschreibweise auf allen Basen identisch funktioniert und wie das Zweierkomplement aussieht – die clevere Darstellung, mit der Computer negative ganze Zahlen mit denselben Schaltkreisen verarbeiten können, die auch für positive verwendet werden.

Warum Binär, Oktal und Hex bestehen bleiben

Computer arbeiten binär, weil digitale Schaltkreise genau zwei stabile Zustände haben – Spannung hoch (1) oder niedrig (0) – und jede andere Datendarstellung dieser zugrunde liegenden Binärschicht zugeordnet werden muss. Ein Transistor aus Silizium ist entweder leitend oder nicht; eine magnetische Domäne zeigt in die eine oder andere Richtung; Eine Zelle im Flash-Speicher speichert eine hohe oder niedrige Ladung. Die binäre Darstellung ist daher keine Entwurfsentscheidung, sondern eine physikalische Einschränkung der digitalen Hardware.

Hexadezimal (Basis 16) bleibt bestehen, da jede Hexadezimalziffer genau 4 Binärziffern darstellt, was Hex zu einer kompakten, für Menschen lesbaren Kurzform für binär macht: Ein Byte (8 Bits) benötigt nur 2 Hexadezimalziffern (00–FF) anstelle von 8 Binärziffern (00000000–11111111). Speicheradressen, Farbcodes (#FF5733), MAC-Adressen und Hash-Werte verwenden zur besseren Lesbarkeit alle Hexadezimalwerte. Oktal (Basis 8) stellt 3 Binärziffern pro Symbol dar und bleibt in Unix-Dateiberechtigungen (rwxr-xr-x = 755) und einigen eingebetteten Systemen bestehen. Basis 10 ist eine rein menschliche Annehmlichkeit, die sich aus der Tatsache ergibt, dass man 10 Finger hat – Computer verwenden intern keine Dezimalzahl und konvertieren nur zur Anzeige für menschliche Benutzer, was zu Rundungsfehlern führt (z. B. dass 0,1 im Binärformat nicht genau darstellbar ist), die Programmierer gelegentlich überraschen.

Positionsnotation über jede Basis hinweg

Die Positionsnotation funktioniert auf jeder Basis identisch – jede Ziffernposition stellt eine Potenz der Basis dar. In der Basis 10 bedeutet die Zahl 5.273 5×10³ + 2×10² + 7×10¹ + 3×10⁰ = 5000 + 200 + 70 + 3. In der Basis 2 bedeutet die Binärzahl 1101 1×2³ + 1×2² + 0×2¹ + 1×2⁰ = 8 + 4 + 0 + 1 = 13 Dezimalzahl. In der Basis 16 bedeutet die Hexadezimalzahl 2AF 2×16² + 10×16¹ + 15×16⁰ = 512 + 160 + 15 = 687 Dezimalzahl.

Diese Einheitlichkeit bedeutet, dass der Konvertierungsalgorithmus unabhängig von den beteiligten Basen identisch ist: Multiplizieren Sie jede Ziffer mit ihrem Positionsgewicht und summieren Sie die Ergebnisse, um eine Dezimalzahl zu erhalten, dividieren Sie dann wiederholt durch die Zielbasis und zeichnen Sie die zu konvertierenden Reste auf dezimal zu einer anderen Basis. Der Rechner automatisiert diesen Vorgang und unterstützt gleichzeitig benutzerdefinierte Basen von 2 bis 36 (mit den Ziffern 0–9, gefolgt von den Buchstaben A–Z für höherwertige Ziffern). Die Basis 36 ist die maximal darstellbare Zahl mit standardmäßigen alphanumerischen Zeichen und wird gelegentlich für die kompakte Kodierung großer Ganzzahlen (URL-Shortener, Dateikennungen) verwendet, wobei 10-stellige Dezimalzahlen in 6-stellige Basis-36-Darstellungen komprimiert werden können.

Zweierkomplement für vorzeichenbehaftete ganze Zahlen

Computer benötigen eine Möglichkeit, negative ganze Zahlen effizient darzustellen, und das Zweierkomplement ist die universelle moderne Lösung, die in praktisch jeder seit den 1970er Jahren hergestellten CPU verwendet wird. Im n-Bit-Zweierkomplement stellt das höchstwertige Bit -2^(n-1) dar, während die übrigen Bits positive Werte darstellen. Für 8-Bit-Zweierkomplement: Der Wert 00000001 ist +1, 01111111 ist +127 (Maximum), 10000000 ist -128 (Minimum) und 11111111 ist -1. Der Bereich für n-Bit-Ganzzahlen mit Vorzeichen beträgt -2^(n-1) bis +2^(n-1)-1, was asymmetrisch ist, da Null einen der positiven Codes annimmt.

Das Zweierkomplement hat einen entscheidenden praktischen Vorteil: Addition und Subtraktion funktionieren genauso wie vorzeichenlose Arithmetik, ohne Sonderfall für negative Zahlen, sodass die Hardware nur eine Addierschaltung für vorzeichenbehaftete und vorzeichenlose Operationen benötigt. Um eine Zahl zu negieren, invertieren Sie alle Bits und addieren 1 – fertig. Die alternativen Darstellungen (Vorzeichen-Größe, Einerkomplement) gerieten in Ungnade, weil sie eine separate Hardwarelogik für vorzeichenbehaftete Operationen erfordern oder zwei Darstellungen von Null (+0 und -0) haben, was beides die Komplexität ohne Nutzen erhöht. Der Rechner zeigt die Zweierkomplementdarstellung für jeden ganzzahligen Wert mit einer Breite von 8, 16, 32 oder 64 Bit an, was besonders nützlich ist, wenn Sie eingebetteten Code debuggen oder binäre Dateiformate dekodieren, in denen vorzeichenbehaftete Werte üblich sind.