vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisFeedbacknächstes Kapitel


Tag C

Binäres und hexadezimales Zahlensystem

Die Grundlagen der Arithmetik haben wir so früh als Kinder in uns aufgesogen, daß es schwerfällt sich vorzustellen, wie es wäre, wenn wir diese Kenntnisse nicht verinnerlicht hätten. So verbinden wir beispielsweise die Zahl 145 ohne großes Nachdenken mit der Vorstellung von »einhundertfünfundvierzig«.

Um die Zahlensysteme zu verstehen, mit denen der Computer arbeitet, müssen wir die Zahl 145 unter einem anderen Blickwinkel untersuchen und sie nicht als Zahl, sondern als Code für eine Zahl betrachten.

Lassen Sie uns ganz von vorne an und zuerst die Beziehung zwischen der Zahl Drei und »3« ergründen. Die Ziffer »3« ist ein Zeichen auf einem Stück Papier; die Zahl Drei ist eine abstrakte Idee. Die Ziffer wird verwendet, um die Zahl zu repräsentieren.

Man kann sich den Unterschied verdeutlichen, indem man sich klarmacht, daß man die Idee der Drei genausogut durch 3, |||, III oder *** ausdrücken könnte.

Im Dezimalsystem (zur Basis 10) lassen sich alle Zahlen mit den Zahlzeichen 0, 1, 2, 3, 4, 5, 6, 7, 8 und 9 schreiben. Wie wird nun die Zahl Zehn dargestellt?

Wir könnten die Zahl 10 durch den Buchstaben A ausdrücken oder als IIIIIIIIII schreiben. Die alten Römer verwendeten das Zeichen X. In dem bei uns gebräuchlichen arabischen Zahlensystem benutzen wir eine Kombination aus Zahlzeichen und dessen Position in der Zahl zur Darstellung von Werten. Die erste (ganz rechts stehende) Stelle ist für die Einer vorgesehen, die nächste für die Zehner. Die Zahl Fünfzehn wird demnach als 15 geschrieben (zu lesen als »eins, fünf«). Das heißt: ein Zehner und fünf Einer.

Es lassen sich bestimmte Regeln aufstellen, die man verallgemeinern kann:

  1. Das Zahlensystem zur Basis 10 verwendet die Ziffern 0 bis 9.
  2. Die Stellen sind Potenzen von Zehn: Einer, Zehner, Hunderter usw.
  3. Lautet die dritte Stelle 100, ist der Wert 99 die größte Zahl, die sich mit zwei Stellen darstellen läßt. Allgemeiner formuliert: Mit n Stellen kann man die Werte 0 bis (10n - 1) ausdrücken. Mit drei Stellen lassen sich demnach die Werte 0 bis (103 - 1) oder 0 bis 999 darstellen.

Andere Basen

Die Basis zehn verwenden wir nicht aus purem Zufall - wir haben zehn Finger. Allerdings sind auch andere Basen möglich. Die zur Basis 10 aufgestellten Regeln können wir für die Beschreibung der Basis 8 wie folgt abändern:

  1. Das Zahlensystem zur Basis 8 verwendet die Ziffern 0 bis 7.
  2. Die Stellen sind Potenzen von 8: Einer, Achter, Vierundsechziger usw.
  3. Mit n Stellen kann man 0 bis (8n - 1) Werte darstellen.

Zur Unterscheidung der Zahlen in den jeweiligen Basen schreibt man die Basis als Index neben die Zahl. Die Zahl 15 zur Basis 10 wird dann als 1510 geschrieben und als »eins, fünf, Basis zehn« gelesen.

Die Zahl 1510 schreibt man im Zahlensystem zur Basis 8 als 178 und liest »eins, sieben, Basis acht«. Man kann auch »Fünfzehn« sagen, da sich am eigentlichen Wert der Zahl nichts geändert hat.

Warum 17? Die 1 bedeutet ein Achter, und die sieben steht für sieben Einer. Ein Achter plus sieben Einer ergibt fünfzehn.

Schreiben wir diese Zahl in Form von fünfzehn Sternchen:

*****     *****
*****

Normalerweise bildet man zwei Gruppen - eine Gruppe mit zehn Sternchen und eine weitere mit fünf. Als Dezimalzahl wird das als 15 (1 Zehner und 5 Einer) dargestellt. Die Sternchen kann man auch wie folgt anordnen:

****      *******
****

Das heißt, acht Sternchen und sieben. Zur Basis 8 schreibt man das als 178 (ein Achter und sieben Einer).

Betrachtungen zu den Basen der Zahlensysteme

Die Zahl Fünfzehn kann man zur Basis Zehn als 1510, zur Basis Neun als 169, zur Basis 8 als 178 und zur Basis 7 als 217 darstellen. Warum 217? In der Zahlenbasis 7 gibt es kein Zahlzeichen 8. Um den Wert fünfzehn auszudrücken, braucht man zwei Siebener und einen Einer.

Wie kann man dieses Verfahren verallgemeinern? Um eine Zahl aus der Basis 10 in die Basis 7 umzuwandeln, geht man von den einzelnen Stellen aus: in der Basis 7 gibt es Einer, Siebener, Neunundvierziger, Dreihundertdreiundvierziger usw. Diese Stellenwerte ergeben sich aus 70, 71, 72, 73 usw. Bauen Sie sich eine Tabelle auf:

4

3

2

1

73

72

71

70

343

49

7

1

In der ersten Zeile steht die Stellennummer. Die zweite Zeile gibt die Potenzen zu 7 wieder. In der dritten Zeile finden Sie die zugehörigen Werte als Dezimalzahl.

Um einen dezimalen Wert in die Basis 7 zu konvertieren, geht man folgendermaßen vor: Zunächst ermittelt man für die umzuwandelnde Zahl die höchstwertige Stelle (das heißt Spalte in der obigen Tabelle). Ist zum Beispiel 200 zu konvertieren, ist der Ergebniswert für Spalte 4 (343) gleich 0, da 343 nicht in 200 paßt.

Als nächstes bestimmt man, wie oft der Wert aus Spalte 3 (49) in 200 enthalten ist. Dazu dividiert man 200 durch 49. Das - ganzzahlige - Ergebnis lautet 4. Diesen Wert schreibt man in Stelle 3 der Zielzahl und arbeitet mit dem Rest der Division weiter: 4. Dieser Wert ist nicht durch 7 (Spalte 1 der Tabelle) teilbar, die Siebener-Stelle wird also zu 0. Der Wert 4 läßt sich mit vier Einern darstellen. In die Einer-Stelle kommt demnach eine 4. Die vollständige Antwort lautet 4047.

Um die (Dezimal-) Zahl 968 in eine Zahl zur Basis 6 zu konvertieren, stellt man zunächst folgende Tabelle auf:

5

4

3

2

1

64

63

62

61

60

1296

216

36

6

1

Der Wert 1296 paßt nicht in 968. Stelle 5 erhält also eine 0. Die Division von 968 durch 216 liefert 4 mit einem Rest von 104. Stelle 4 ist demnach 4. Dividiert man den Rest 104 durch 36, erhält man 2 Rest 32. Die Stelle 3 ist also 2. Bei Division von 32 durch 6 erhält man 5 mit einem Rest von 2. Die umgewandelte Zahl lautet schließlich 42526.

5

4

3

2

1

64

63

62

61

60

1296

216

36

6

1

0

4

2

5

2

Die Konvertierung von einer Basis in eine andere (zum Beispiel Basis 6 in Basis 10) läßt sich durch Multiplikationen schneller durchführen:

4 * 216 = 864
2 * 36 = 72
5 * 6 = 30
2 * 1 = 2
Summe: 968

Das Binärsystem

Die Basis 2 ist die ultimative Erweiterung dieses Konzepts. Hier gibt es nur zwei Ziffern: 0 und 1. Die Stellen besitzen folgende Wertigkeiten:

Stelle:

8

7

6

5

4

3

2

1

Potenz:

27

26

25

24

23

22

21

20

Wert:

128

64

32

16

8

4

2

1

Um die Dezimalzahl 88 in eine Zahl zur Basis 2 umzuwandeln, verfährt man wie oben: Die Zahl ist nicht durch 128 teilbar, Stelle 8 ist daher 0. In 88 paßt einmal 64, Stelle 7 wird zu 1. Es bleibt ein Rest von 24. Dieser ist nicht durch 32 teilbar, so daß Stelle 6 zu 0 wird. 16 paßt einmal in 24, die Stelle 5 ist demnach 1. Der Rest ist 8. Das entspricht genau dem Wert von Stelle 4, die somit eine 1 erhält. Da bei Division durch 8 kein Rest bleibt, sind die übrigen Stellen 0.

0 1 0 1 1 0 0 0

Zur Kontrolle konvertieren wir die Zahl zurück:

1 * 64 = 64
0 * 32 = 0
1 * 16 = 16
1 * 8 = 8
0 * 4 = 0
0 * 2 = 0
0 * 1 = 0
Summe: 88

Warum die Basis 2?

Zahlen zur Basis 2 lassen sich von einem Computer problemlos verarbeiten. Eigentlich wissen Computer überhaupt nicht, ob es sich um Buchstaben, Ziffern, Anweisungen oder Programme handelt. Der Hauptteil eines Computers besteht aus elektronischen Schaltungen, die nur zwei Zustände unterscheiden: entweder es fließt viel Strom oder sehr wenig.

Im Gegensatz zu analogen Verfahren (mit unendlich vielen Zuständen) und digitalen Verfahren (mit mehreren diskreten Zuständen) verwendet man in der binären Schaltungstechnik keine relative Skala (wenig Strom, etwas Strom, mehr Strom, viel Strom, sehr viel Strom), sondern eine binäre Skala (»genug Strom« oder »nicht genug Strom«). Statt der Ausdrücke »genug« und »nicht genug« sagt man einfach »Ja« oder »Nein«. Die Werte Ja oder Nein bzw. TRUE (Wahr) oder FALSE (Falsch) lassen sich als 1 oder 0 darstellen. Es gilt meist die Zuordnung 1 für TRUE oder Ja. Allerdings handelt es sich nur um eine Konvention. Man könnte genausogut dem Wert 1 die Bedeutungen FALSE oder Nein zuordnen.

Aus diesen Erläuterungen wird die Leistung des Binärsystems deutlich: Mit Einsen und Nullen kann man die logischen Funktionen jedes Schaltkreises darstellen (es fließt Strom oder keiner). Nur diese beiden Zustände hat der Computer zu unterscheiden.

Bits, Bytes und Nibbles

Die Darstellung der logischen Zustände mit Einsen und Nullen erfolgt durch sogenannte Binärziffern (oder Bits). Die ersten Computer konnten 8 Bits gleichzeitig verarbeiten. Daher lag es nahe, den Code mit Hilfe von 8-Bit-Zahlen - den sogenannten Bytes - aufzusetzen.

Ein Halbbyte (4 Bit) bezeichnet man als Nibble.

Mit 8 Binärziffern lassen sich 256 verschiedene Werte darstellen. Sehen Sie sich dazu die Stellen an: Wenn alle 8 Bit gesetzt (1) sind, beträgt der Wert 255. Sind keine Bits gesetzt (alle gelöscht oder Null), ergibt sich der Wert 0. Der Bereich 0 bis 255 umfaßt 256 mögliche Werte.

Was ist ein Kbyte?

Der Wert 210 (1024) liegt in der Nähe von 103 (1000). Diese auffallende Übereinstimmung führte dazu, daß die Informatiker den Wert 210 Byte als 1 Kbyte oder 1 Kilobyte bezeichneten und sich damit an den Einheitenvorsatz »Kilo« für den Faktor 1000 anlehnten.

Analog dazu liegt 1024 * 1024 (1.048.576) nahe genug an einer Million, so daß man dafür 1 Mbyte oder 1 Megabyte schreibt und 1024 Megabyte als 1 Gigabyte bezeichnet.

Binärzahlen

Computer codieren alles in Mustern aus Einsen und Nullen. Sämtliche Maschinenanweisungen sind in dieser Form verschlüsselt und werden durch die Logikschaltkreise interpretiert. Prinzipiell lassen sich diese binär codierten Anweisungen als Zahlen ausdrücken. Es wäre aber falsch, diesen Zahlen eine spezielle Bedeutung zuzuschreiben.

Beispielsweise interpretiert der 80x6-Chipsatz von Intel das Bitmuster 1001 0101 als Befehl. Man kann diese Bitfolge zwar in die Dezimalzahl 149 umwandeln, aber diese Zahl hat per se keine Bedeutung. Manchmal sind diese Bitmuster Anweisungen, manchmal stellen sie Werte dar, und ein anderes Mal sind es Zeichencodes. In diesem Zusammenhang ist der standardisierte ASCII-Zeichensatz von Bedeutung. In ASCII (American Standard Code for Information Interchange - amerikanischer Standardcode für den Informationsaustausch) ist jedem Buchstaben und Satzzeichen eine binäre Darstellung aus 7 Bits zugeordnet. Beispielsweise wird der Kleinbuchstabe »a« durch 0110 0001 dargestellt. Das ist keine Zahl, obwohl man diese Bitfolge in die Zahl 97 (64 + 32 + 1) umwandeln kann. In der Praxis sagt man, daß der Buchstabe »a« den ASCII-Wert 97 besitzt. Im engeren Sinne ist die binäre Darstellung von 97 (0110 0001) die Codierung des Buchstabens »a« - bequemer ist es allerdings, den Dezimalwert 97 zu verwenden.

Hexadezimalsystem

Da Binärzahlen recht unübersichtlich sind, wurde eine einfachere Form der Darstellung für die Werte gesucht. Die Umwandlung von Binärzahlen in das Dezimalsystem ist relativ umständlich. Dagegen lassen sich Zahlen zur Basis 2 sehr einfach in ein Zahlensystem zur Basis 16 konvertieren.

Dieses sogenannte Hexadezimalsystem kennt 16 Zahlzeichen: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E und F. Den dezimalen Werten 10 bis 15 wurden willkürlich die Buchstaben A bis F zugeordnet. Die Stellen im Hexadezimalsystem lauten:

4

3

2

1

163

162

161

160

4096

256

16

1

Die Umwandlung vom hexadezimalen in das dezimale System erfolgt durch Multiplikation. Die Zahl F8C stellt damit den folgenden dezimalen Wert dar:

F * 256 = 15 * 256 = 3840
8 * 16 = 128
C * 1 = 12 * 1 = 12
Summe: 3980

Die Umwandlung der Zahl FC in eine Binärzahl läßt sich am besten erledigen, indem man sie zuerst in das Dezimalsystem und von dort aus in das Binärsystem konvertiert:

F * 16 = 15 * 16 = 240
C * 1 = 12 * 1 = 12
Summe: 252

Für die Umwandlung von 25210 in das Binärsystem braucht man die folgende Tabelle:

Stelle:

9

8

7

6

5

4

3

2

1

Potenz:

28

27

26

25

24

23

22

21

20

Wert:

256

128

64

32

16

8

4

2

1

Die Zahl 252 läßt sich nicht durch 256 teilen.

252 dividiert durch 128 ergibt 1 Rest 124.

124 dividiert durch 64 ergibt 1 Rest 60.

60 dividiert durch 32 ergibt 1 Rest 28.

28 dividiert durch 16 ergibt 1 Rest 12.

12 dividiert durch 8 ergibt 1 Rest 4.

4 dividiert durch 4 ergibt 1 Rest 0.

0 0 1 1 1 1 1 1 0 0

Die Lösung in der Binärdarstellung lautet also 1111 1100.

Gliedert man die Binärzahl in zwei Gruppen zu je vier Ziffern, läßt sich die Zahl wesentlich einfacher umwandeln.

Die rechte Gruppe lautet 1100. Der Dezimalwert ist 12, als Hexadezimalzahl ausgedrückt C.

Die linke Gruppe lautet 1111. Der Wert als Dezimalzahl ist 15 oder hexadezimal F.

Damit läßt sich schreiben:

1111 1100
F C

Schreibt man beide Hexadezimalzahlen zusammen, erhält man FC, was den eigentlichen Wert von 1111 1100 repräsentiert. Dieses Kurzverfahren funktioniert immer. Eine Binärzahl beliebiger Länge kann man in Gruppen zu je vier Stellen einteilen, jede Gruppe einzeln in eine Hexadezimalzahl umwandeln und die sich ergebenden Ziffern hintereinanderschreiben. Das Ergebnis ist die Hexadezimaldarstellung der Binärzahl. Das folgende Beispiel zeigt die Umwandlung einer längeren Zahl:

1011 0001 1101 0111

Die dezimale Wertigkeit der Stellen lautet von rechts nach links: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384 und 32768.

1 *     1 =     1
1 * 2 = 2
1 * 4 = 4
0 * 8 = 0

1 * 16 = 16
0 * 32 = 0
1 * 64 = 64
1 * 128 = 128

1 * 256 = 256
0 * 512 = 0
0 * 1024 = 0
0 * 2048 = 0

1 * 4096 = 4096
1 * 8192 = 8192
0 * 16384 = 0
1 * 32768 = 32768

Summe: 45527

Die Umwandlung dieser Zahl in eine Hexadezimalzahl erfordert eine Tabelle mit folgenden hexadezimalen Werten.

Stelle

5

4

3

2

1

Potenz

164

163

162

161

160

Wert

65535

4096

256

16

1

Die Zahl 45527 läßt sich nicht durch 65536 teilen. Als erste Stelle kommt demnach 4096 in Betracht. Der Wert 4096 paßt elfmal (45056) in 45527, mit einem Rest von 471. Dieser Rest liefert bei Division durch 256 den Wert 1 und einen weiteren Rest von 215. Die Division von 215 durch 16 liefert 13 mit einem Rest von 7. Als Hexadezimalzahl ergibt sich also B1D7.

Die Probe sieht folgendermaßen aus:

B * 4096 = 11 * 4096 = 45056
1 * 256 = 256
D * 16 = 13 * 16 = 208
7 * 1 = 7
Summe: 45527

Beim abgekürzten Verfahren nimmt man die Binärzahl, 1011000111010111, und teilt sie in Gruppen zu je vier Stellen auf: 1011 0001 1101 0111. Dann rechnet man jede der vier Gruppen einzeln in eine Hexadezimalzahl um:

1011 =
1 * 1 = 1
1 * 2 = 2
0 * 4 = 0
1 * 8 = 8
Summe: 11
Hex: B

0001 =
1 * 1 = 1
0 * 2 = 0
0 * 4 = 0
0 * 8 = 0
Summe: 1
Hex: 1

1101 =
1 * 1 = 1
0 * 2 = 0
1 * 4 = 4
1 * 8 = 8
Summe: 13
Hex: D

0111 =
1 * 1 = 1
1 * 2 = 2
1 * 4 = 4
0 * 8 = 0
Summe: 7
Hex: 7

Ergebnis in Hex-Darstellung: B1D7



vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisFeedbacknächstes Kapitel


© Markt&Technik Verlag, ein Imprint der Pearson Education Deutschland GmbH