|
Als Mensch rechnen wir mit dem dezimalen Zahlensystem. Einem Stellenwertsystem, dem die Basis zehn zu Grunde liegt. Nicht zuletzt weil wir als Mensch zehn Finger besitzen, können wir mit diesem System hervorragend umgehen. Anders sieht dies bei Maschinen aus, die aufgrund ihrer physikalischen Eigenschaften andere Systeme einsetzen.
Anmerkung: Negative Zahlen und Gleitkommazahlen werden in diesem Beitrag nicht behandelt, da sie für die Netzwerktechnik keine Bedeutung haben.
Bevor die einzelnen Zahlensysteme vorgestellt werden, soll erstmal ungeachtet ihrer Bedeutung die Notation (Schreibweise) der Werte angesprochen werden. Dies ist nicht zuletzt deshalb relevant, da manche Werte ohne eine genauere Beschreibung augenscheinlich das selbe darstellen würden. Ergibt sich die Zugehörigkeit eines Wertes zu einem Zahlensystem nicht aus dem Kontext heraus, dann muss man sie genauer beschreiben. Dabei sind oft mehrere Varianten möglich, welche die folgende Tabelle anhand des Wertes 11 vorstellen soll:
| dezimal |
11(10) |
11dez |
|
11(dez) |
| binär |
11(2) |
11b |
|
11(b) |
| hexadezimal |
11(16) |
11hex |
0x11 |
11(hex) |
| oktal |
11(8) |
11o |
0o11 |
11(oct) |
Anmerkung: Gängig sind die ersten drei Varianten. Aber zur Darstellung in diesem und anderen Beiträgen wird bei Bedarf die letzte Variante verwendet, da sie sich schlichtweg einfacher umsetzen lässt.
Das erste wichtige Zahlensystem in der Informatik, und vor allem in der Netzwerktechnik, ist das duale Zahlensystem, auch binäres Zahlensystem genannt. Dual bedeutet, dass eine Stelle, Bit genannt, zwei verschiedene Zustände annehmen kann. 0 oder 1. Das Verständnis für dieses Zahlensystem ist eine Grundvoraussetzung zur Anwendung von IPv4.
Mit einem Bit lassen sich also zwei Zustände darstellen, eben ob es gesetzt ist ( 1 ) oder nicht ( 0 ). Mit zwei Bits lassen sich schon vier Zustände darstellen, mit drei Bits acht Zustände, unsw. Dabei nimmt jedes Bit eine dezimale Wertigkeit ein, wobei das rechteste Bit die niedrigste dezimale Wertigkeit besitzt, nämlich eins. Dieses Bit wird auch LSB (Least Significant Bit) genannt. Betrachtet man nun den jeweils linken Nachbarn, dann verdoppelt sich bei diesem die dezimale Wertigkeit. Das Bit an der äußersten linken Stelle repräsentiert den höchsten Dezimalwert und wird deshalb auch MSB (Most Significant Bit) genannt.
Anmerkung: Das LSB ist immer die 1, während das MSB immer davon abhängt, wie groß die Dualzahl ist.
Zur Verdeutlichung soll folgende Tabelle dienen, welche die möglichen Zustände von vier Bits und deren dezimale Wertigkeit darstellt:
Wert (dezimal) → Zustand ↓
|
8 (MSB)
|
4 |
2 |
1 (LSB)
|
Ergebnis (dezimal) ↓
|
| 1. |
0 |
0 |
0 |
0 |
0 |
| 2. |
0 |
0 |
0 |
1 |
1 |
| 3. |
0 |
0 |
1 |
0 |
2 |
| 4. |
0 |
0 |
1 |
1 |
3 |
| 5. |
0 |
1 |
0 |
0 |
4 |
| 6. |
0 |
1 |
0 |
1 |
5 |
| 7. |
0 |
1 |
1 |
0 |
6 |
| 8. |
0 |
1 |
1 |
1 |
7 |
| 9. |
1 |
0 |
0 |
0 |
8 |
| 10. |
1 |
0 |
0 |
1 |
9 |
| 11. |
1 |
0 |
1 |
0 |
10 |
| 12. |
1 |
0 |
1 |
1 |
11 |
| 13. |
1 |
1 |
0 |
0 |
12 |
| 14. |
1 |
1 |
0 |
1 |
13 |
| 15. |
1 |
1 |
1 |
0 |
14 |
| 16. |
1 |
1 |
1 |
1 |
15 |
Ist nun ein Bit an einer Stelle gesetzt ( 1 ), dann ist auch der entsprechende Dezimalwert gesetzt. Betrachtet man beispielsweise den zwölften Zustand in der Tabelle, dann erkennt man, dass das vierte (hier MSB), zweite und erste Bit (LSB) gesetzt wurden. Addiert man nun ihre dezimalen Wertigkeiten ( 8 + 2 + 1 ), erhält man als dezimales Ergebnis 11. Nach diesem Prizip werden ebenso größere Dualzahlen in Dezimalzahlen umgerechnet. Man ermittelt den dezimalen Wert des MSB's und addiert alle weiteren dezimalen Werte bis hin zum LSB. Die Summe ergibt den Dezimalwert, welchen die Dualzahl repräsentiert.
Um eine Dezimalzahl nun in eine Dualzahl umzurechnen gibt es mehrere Methoden. Im Bereich von acht Bits geht das mit etwas Übung im Kopf. Alternativ, in dem man sich obige Tabelle aufzeichnet und dann von links beginnend die größtmöglichen Dezimalwerte mit einer 1 markiert, bis man die gesuchte Dualzahl quasi zusammengebaut hat. Eine weitere wäre die rechnerische Möglichkeit. Im Folgenden anhand der Umrechnung der Dezimalzahl 79 in die entsprechende Dualzahl erklärt:
79 : 2 → 1 Ist 79 durch 2 teilbar? Nein! Größtmöglich wären 78, was 39 ergibt. Der Restwert von 1 wird notiert. 39 : 2 → 1 Ist 39 durch 2 teilbar? Nein! Größtmöglich wären 38, was 19 ergibt. Der Restwert von 1 wird notiert. 19 : 2 → 1 Ist 19 durch 2 teilbar? Nein! Größtmöglich wären 18, was 9 ergibt. Der Restwert von 1 wird notiert. 9 : 2 → 1 Ist 9 durch 2 teilbar? Nein! Größtmöglich wären 8, was 4 ergibt. Der Restwert von 1 wird notiert. 4 : 2 → 0 Ist 4 durch 2 teilbar? Ja! Dies ergibt 2. Ein Restwert existiert nicht und wird mit 0 notiert. 2 : 2 → 0 Ist 2 durch 2 teilbar? Ja! Dies ergibt 1. Ein Restwert existiert nicht und wird mit 0 notiert. 1 : 2 → 1 Ist 1 durch 1 teilbar? Nein! Nun wird nur noch der Restwert von 1 notiert.
Die Leserichtung des Ergebnisses erfolgt abschließend immer von unten nach oben! Daraus folgt 1001111(b) = 79(dez).
Ein weiteres wichtiges Zahlensystem ist das hexadezimale Zahlensystem. Mit dem Einzug von IPv6 wird auch dieses in der Netzwerktechnik immer bedeutender. Das hexadezimale Zahlensystem basiert darauf, dass eine Stelle sechzehn verschiedene Zustände annehmen kann. Die Darstellung erfolgt durch die Zeichen 0 bis 9 und A bis F und stellt sich wie folgt dar:
| Zeichen |
F |
E |
D |
C |
B |
A |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
| Wert (dez) |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Um Dezimalzahlen größer als fünfzehn darzustellen, reicht eine Stelle nicht mehr aus. Dann verwendet man eine weitere Stelle eine Potenz erhöht um 1 zur Basis 16 zugesprochen. Das Ergebnis wird mit der Wertigkeit der Ziffer multipliziert und am Ende die Produkte addiert. Bei größeren Zahlen ist dies sicherlich keine Aufgabe die ohne Rechenhilfe durchgeführt werden kann. Dennoch muss man zumindest das System dahinter verstehen.
Im Folgenden ein Beispiel, in dem der Wert AF4(hex) in eine Dezimalzahl umgerechnet werden soll:
A(hex) → 10 • 162 = 10 • 256 = 2560 F(hex) → 15 • 161 = 15 • 16 = 240 4(hex) → 4 • 160 = 4 • 1 = 4 Summe = 2804(dez)
Die Umrechnung einer Dezimalzahl in eine Hexadezimalzahl erfolgt ähnlich wie bei dem Verfahren der Binärumwandlung, nämlich durch das Teilen der Basis. Diese ist allerdings bei Hexadezimalzahlen 16. Dazu ein Beispiel mit der Dezimalzahl 1516:
1516 : 16 → C Ist 1516 durch 16 teilbar? Nein! Größtmöglich wären 1504, was 94 ergibt. Der Restwert von 12 (C) wird notiert. 94 : 16 → E Ist 94 durch 16 teilbar? Nein! Größtmöglich wären 80, was 5 ergibt. Der Restwert von 14 (E) wird notiert. 5 : 16 → 5 Ist 5 durch 16 teilbar? Nein! Nun wird nur noch der Restwert von 5 notiert.
Die Leserichtung beim Ergebnis ist ebenfalls von unten nach oben! Daraus folgt 5EC(hex) = 1516(dez).
Schließlich soll noch das oktale Zahlensystem kurz angesprochen werden. Es hat zwar in der Netzwerktechnik eine geringe Bedeutung, aber unter Linux findet es immer noch Verwendung (Dateirechte). Im Gegensatz zum hexadezimalen Zahlensystem basiert das oktale Zahlensystem auf der Basis 8. Es verwendet dazu drei Bits um den Zahlenraum 0 bis 7 darstellen zu können. Für größere Zahlen nimmt man wieder eine Stelle hinzu, welche eine Potenz erhöht um 1 zur Basis 8 zugesprochen bekommt. Also das gleiche Prinzip wie bei den Hexadezimalzahlen.
Als Beispiel für die Umrechnung eines oktalen Wertes in eine Dezimalzahl soll der Wert 277(okt) hergenommen werden:
2(oct) → 2 • 82 = 2 • 64 = 128 7(oct) → 7 • 81 = 7 • 8 = 56 7(oct) → 7 • 80 = 7 • 1 = 7 Summe = 191(dez)
Bei der Umrechnung der Zahl 191(dez) in die Oktalzahl teilt man wieder durch 8 und erhält so das richtige Ergebnis:
191 : 8 → 7 Ist 191 durch 8 teilbar? Nein! Größtmöglich wären 184, was 23 ergibt. Der Restwert von 7 wird notiert. 23 : 8 → 7 Ist 23 durch 8 teilbar? Nein! Größtmöglich wären 16, was 2 ergibt. Der Restwert von 7 wird notiert. 2 : 8 → 2 Ist 2 durch 8 teilbar? Nein! Nun wird nur noch der Restwert von 2 notiert.
Und wieder ist die Leserichtung von unten nach oben, was zum korrekten Ergebnis von 277(okt) führt.
Diese Zahlensysteme (zumindest das duale und das hexadezimale) sollte ein Netzwerktechniker gut beherrschen. Sie helfen einem unter anderem bei der effizienteren Planung logischer Netze und bei der schnelleren Fehlersuche im Adressierungsschema.
Abschließend noch eine Tabelle mit allen vorgestellten Zahlensystemen von 0(dez) bis 20(dez) in der Gegenüberstellung:
| dezimal |
hexadezimal |
oktal |
dual |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
10 |
3 |
3 |
3 |
11 |
4 |
4 |
4 |
100 |
5 |
5 |
5 |
101 |
6 |
6 |
6 |
110 |
7 |
7 |
7 |
111 |
8 |
8 |
10 |
1000 |
9 |
9 |
11 |
1001 |
10 |
A |
12 |
1010 |
11 |
B |
13 |
1011 |
12 |
C |
14 |
1100 |
13 |
D |
15 |
1101 |
14 |
E |
16 |
1110 |
15 |
F |
17 |
1111 |
16 |
10 |
20 |
10000 |
17 |
12 |
21 |
10001 |
18 |
13 |
22 |
10010 |
19 |
14 |
23 |
10011 |
20 |
15 |
24 |
10100 |
|