Im Alltag sind wir uns gewohnt, Zahlen im Dezimalsystem (Basis 10) darzustellen. Die Informatik basiert aber auf dem Binärsystem (Basis 2). Deshalb werden auch Dateien und Programmvariablen binär gespeichert. Um diese Informationen zu verstehen, müssen Sie die Zahlen zwischen den verschiedenen Zahlensystemen umrechnen.
Um Missverständnisse zu vermeiden, geben wir bei den Zahlen jeweils das Zahlensystem an. Dazu notieren wir die Basis tiefgestellt neben die Zahl:
Ebenfalls gebräuchlich ist der Buchstabe b
für das Binärsystem bzw. x
für das Hexadezimalsystem:
Um eine Dezimalzahl in ein anderes Zahlensystem umzurechnen, führen wir eine Reihe von Divisionen durch.
Dezimalzahl ----------- = Ergebnis und Rest Basis
Rechnen Sie die Dezimalzahl 253 ins 7er-System um:
25310 = ???7
Schritt | Division | Ergebnis | Rest | Resultat |
---|---|---|---|---|
1 | 253 / 7 | 36 | 1 | __17 |
2 | 36 / 7 | 5 | 1 | _117 |
3 | 5 / 7 | 0 | 5 | 5117 |
Wie im Beispiel führen wir eine Reihe von Divisionen durch, um die Dezimalzahl ins Binärsystem zu übertragen. Da das Binärsystem nur zwei Ziffern kennt, wird das Resultat viele Stellen enthalten.
Schätzen Sie zunächst ab, wie viele binäre Stellen das Resultat enthalten wird. Dabei gilt die Faustregel: 3 dezimale Stellen entsprechen ungefähr 10 binäre Stellen.
Dezimalstellen * 10 binäre Stellen = ------------------- 3
Binäre Zahlen werden einfacher lesbar, wenn Sie die Ziffern in 4er Gruppen (von rechts nach links) anordnen. Die vorderste Gruppe füllen wir mit führenden Nullen auf, bis auch diese aus 4 binären Ziffern besteht.
0010 1010 1111 0001
2475310 = ????2
24753 / 2 = 12376 Rest 1 12376 / 2 = 6188 Rest 0 6188 / 2 = 3094 Rest 0 3094 / 2 = 1547 Rest 0 1547 / 2 = 773 Rest 1 773 / 2 = 386 Rest 1 386 / 2 = 193 Rest 0 193 / 2 = 96 Rest 1 96 / 2 = 48 Rest 0 48 / 2 = 24 Rest 0 24 / 2 = 12 Rest 0 12 / 2 = 6 Rest 0 6 / 2 = 3 Rest 0 3 / 2 = 1 Rest 1 1 / 2 = 0 Rest 1
Resultat: 2475310 = 0110 0000 1011 00012
Binäre Zahlen lassen sich relativ einfach ins 8er (Oktal) und 16er (Hexadezimal) System umrechnen. Das liegt daran, dass 8 und 16 Potenzen von 2 sind:
Deshalb werden binäre Werte häufig als oktale oder hexadezimale Zahlen dargestellt.
Die Umrechnung ins 10er System ist hingegen schwieriger, da 10 keine Potenz von 2 ist.
Eine Ziffer im 8er-System entspricht drei Ziffern im 2er-System: 81 = 23
Binär | Oktal | Binär | Oktal | |
---|---|---|---|---|
000 | 0 | / | 100 | 4 |
001 | 1 | / | 101 | 5 |
010 | 2 | / | 110 | 6 |
011 | 3 | / | 111 | 7 |
0110 0000 1011 00012 = ??? 8
1. 3er Gruppen bilden: 0 110 000 010 110 001 2. Vorderste Gruppe ergänzen: 000 110 000 010 110 001 3. Übertragen ins oktale System: 0 6 0 2 6 1
Resultat: 0110 0000 1011 00012 = 602618
Diese Umwandlung ist ebenso einfach:
5738 = ???2
1. Umwandeln: 5 => 101 7 => 111 3 => 011 2. 4er Gruppen bilden: 0001 0111 1011
Resultat: 5738 = 0001 0111 10112
Eine Ziffer im 16er-System entspricht vier Ziffern im 2er-System: 161 = 24
Binär | Hex | Binär | Hex | |
---|---|---|---|---|
0000 | 0 | 1000 | 8 | |
0001 | 1 | 1001 | 9 | |
0010 | 2 | 1010 | A | |
0011 | 3 | 1011 | B | |
0100 | 4 | 1100 | C | |
0101 | 5 | 1101 | D | |
0110 | 6 | 1110 | E | |
0111 | 7 | 1111 | F |
0110 0000 1011 00012 = ??? 16
1. 4er Gruppen bilden: 0110 0000 1011 0001 2. Übertragen ins hexadezimale System: 6 0 B 1
Resultat: 0110 0000 1011 00012 = 60B116
Wie Sie wohl bereits vermutet haben, drehen wir den Prozess einfach um:
1A5C16 = ????2
1 = 0001 A = 1010 5 = 0101 C = 1100
Resultat: 1A5C16 = 0001 1010 0101 11002
Die offensichtliche Methode zur Umrechnung ins Dezimalsystem basiert auf dem Wert der einzelnen binären Ziffern. Von rechts nach links verdoppelt sich der Wert der einzelnen Ziffern.
1001 01012 = ???10
Ziffer | Wert | Produkt |
---|---|---|
1 | 128 | 128 |
0 | 64 | 0 |
0 | 32 | 0 |
1 | 16 | 16 |
0 | 8 | 0 |
1 | 4 | 4 |
0 | 2 | 0 |
1 | 1 | 1 |
Summe | 149 |
Resultat: 1001 01012 = 14910
Bei der Verdoppelungsmethode verwenden wir nur eine Addition und die Multiplikation mit 2. Daher wird es wesentlich einfacher binäre Zahlen im Kopf umzurechnen.
Für jede binäre Stelle führen wir von links nach rechts zwei Rechnungen durch:
1001 01012 = ???10
Binäre Ziffer | Berechnung | Resultat |
---|---|---|
Start | 0 | |
1001 0101 | 0*2 + 1 | 1 |
1001 0101 | 1*2 + 0 | 2 |
1001 0101 | 2*2 + 0 | 4 |
1001 0101 | 4*2 + 1 | 9 |
1001 0101 | 9*2 + 0 | 18 |
1001 0101 | 18*2 + 1 | 37 |
1001 0101 | 37*2 + 0 | 74 |
1001 0101 | 74*2 + 1 | 149 |
Resultat: 1001 01012 = 14910
Mit dieser Methode lassen sich auch andere Zahlensysteme ins Dezimalsystem übertragen. Um eine Zahl im 16er System (Hexadezimal) ins Dezimalsystem zu übertragen, wird einfach das bisherige Resultat mit 16 multipliziert.