Zahlensysteme der Informatik 2: Hexadezimalsystem

Zahlensysteme der Informatik 2: Hexadezimalsystem

Im ersten Teil des Artikels wurde deutlich, dass binäre Zahlen sehr lang werden können. So eine Darstellung, die nur aus zwei Zahlen besteht ist demnach nicht nur unhandlich, sondern auch fehleranfällig. Das ist einer der Gründe warum man das Hexadezimalsystem eingeführt hat.
Dieses Zahlensystem verwendet als Basis die Zahl 16. Man kann also mit einer Zahl bereits 16 Zustände beschreiben, im binären Zahlensystem braucht man dafür 4 Zahlen.

Um eine hexadezimale Zahl darzustellen braucht man 16 verschiedene Zeichen. Dazu verwendet man für die ersten zehn Zeichen die dezimalen Zahlen null bis neun und für die restlichen die Buchstaben A,B,C,D,E,F (oder auch a,b,c,d,e,f).

hexadezimale Zahl binäre Zahl dezimale Zahl
Umwandlungstabelle: Hexadezimal – Binär – Dezimal
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
A 1010 10
B 1011 11
C 1100 12
D 1101 13
E 1110 14
F 1111 15

Tipp: Man erkennt, dass die letzte Stelle der binären Zahl sich immer in Einerschritten(20=1) wiederholen. Die Zahlen an der vorletzten Stelle wechseln sich in Zweierschritten (21=2) ab. Die Zahlen an der dritten Stelle von rechts in Viererschritten (22=4) und so weiter(2N-Schritte). Nach diesem Muster kann man sich die Tabelle schnell hinschreiben ohne die Zahlen auswendig lernen zu müssen.

Um eine Verwechslung zwischen den Zahlensystemen auszuschließen, wird im Folgenden jede Zahl einen Index bekommen, z.B. 1001B, 1001H, 1001D. Wenn kein Index vorhanden ist, dann handelt es sich immer um eine dezimale Zahl.
In der Informatik findet man für Hexadezimalzahlen auch häufig eine Darstellung mit einem 0x davor, also zum Beispiel 0xDF059A, wie man es am folgenden Screenshot sieht.

vs c++ debugger

Konvertierung: hexadezimal → binär

Wie bereits dargestellt, stellt das Hexadezimalsystem eine verkürzte Schreibweise des binären Systems dar. Aus diesem Grund ist die Umwandlung einer hexadezimalen Zahl in eine binäre besonders einfach. Man ersetzt die hexadezimalen Zeichen durch entsprechende binären Zahlen (siehe Tabelle).

3DFEH → ?B

3H = 0011B
DH = 1101B
FH = 1111B
EH = 1110B
3DFEH entspricht somit 0011.1101.1111.1110B

Die Trennpunkte dienen nur der Übersichtlichkeit.
Nächstes Beispiel.

FF90H → 1111.1111.1001.0000B

Konvertierung: binär → hexadezimal

Diese Konvertierung beruht ebenfalls nur auf einer einfachen Zahlenersetzung. Man hängt links so viele Nullen dran bis die Anzahl der Zahlenstellen durch 4 teilbar ist. Danach zählt man immer 4 Stellen ab und ersetzt sie durch eine entsprechende hexadezimale Zahl.

1000.1010.1101.0000B = 8AD0H

10.0100.1000.0001B → ?H

14 Stellen, also muss man zwei Nullen vorne dranhängen. Danach wie gehabt einfach durch entsprechende hexadezimale Werte aus der Tabelle ersetzen.

0010.0100.1000.0001B → 2481H

Konvertierung: hexadezimal → dezimal

Dazu kann man die hexadezimale Zahl zuerst in eine binäre umwandeln und diese dann in eine dezimale oder man konvertiert direkt in Analogie zu zum binären System.

D3B6H = DH·163 + 3H·162 + BH·161 + 6H·160 = 13·163 + 3·162 + 11·161 + 6·160 = 54198

Konvertierung: dezimal → hexadezimal

Auch hier gilt: entweder man konvertiert indirekt über das binäre Zahlensystem oder direkt, was wieder analog zum binären System funktioniert.

Man teilt die dezimale Zahl durch 16 und schreibt das ganzzahlige Ergebnis mit dem Rest hin. Danach wiederholt man die obere Operation mit dem ganzzahligen Ergebnis so lange, bis das Ergebnis Null ist. Der Rest der einzelnen Rechenoperationen stellt die einzelnen Stellen der hexadezimalen Zahl dar.

8372049D = ?H

8372049 / 16 = 523253 Rest 1
523253 / 16 = 32703 Rest 5
32703 / 16 = 2043 Rest 15 (F)
2043 / 16 = 127 Rest 11 (B)
127 / 16 = 7 Rest 15 (F)
7 / 16 = 0 Rest 7

Damit lautet die Lösung (Umgekehrte Ableserichtung nicht vergessen!): 8372049D = 7FBF51H

oktalsystem beispielMan erkennt, dass die Umformungen zwischen den einzelnen Zahlensystemen immer nach den gleichen Muster erfolgen, man muss nur die Basis auswechseln.
Auf diesem Wege kann man auch ein Oktalsystem einführen, welches als Basis 8 benutzt und zum Beispiel beim Rechtemanagement auf Linux-Systemen zum Einsatz kommt.
Ich werde das hier nicht tun, da es nur eine Wiederholung wäre. Es soll nur drauf hingewiesen werden, dass man zu jeder Basis ein Zahlensystem konstruieren kann und dass je nach Bedarf unterschiedliche Zahlensysteme eingesetzt werden.

Im nächsten Teil des Artikels werde ich die Begriffe Bit, Byte und die Bitwertigkeit erläutern. Vorbeischauen lohnt sich ;)

Schreibe einen Kommentar