2.2 Informationsspeicherung im Computer
Wie Sie bereits in der Einführung erfahren haben und wahrscheinlich schon vorher wussten, speichern Computer Informationen als Abfolge von Einsen und Nullen ab. Diese Darstellungsform wird als binäre Codierung bezeichnet. Die duale Darstellung ganzer Zahlen im entsprechenden Zahlensystem, nämlich dem dualen oder Zweiersystem, ist nur ein Sonderfall der binären Darstellung.
2.2.1 Zahlensysteme
Für das Verständnis der Speicherung von Werten im Computer benötigen Sie Kenntnisse der verschiedenen Zahlensysteme. Bereits in Kapitel 1, »Einführung«, wurde die Bedeutung der Stellenwertsysteme als Voraussetzung für die Erfindung von Rechenmaschinen und Computern hervorgehoben.
In einem Stellenwertsystem hängt der Wert einer einzelnen Ziffer von zwei Faktoren ab: ihrem Eigenwert und ihrer Position innerhalb der Zahl. Jede Stelle besitzt einen festen Grundwert, mit dem der Wert der einzelnen Ziffer multipliziert wird. Die Basis B gibt an, wie viele verschiedene Ziffern nötig sind, denn der Grundwert jeder Stelle ist das B-Fache der rechts von ihr befindlichen Stelle. Auf diese Weise werden Ziffern von 0 bis B–1 benötigt, um alle möglichen ganzen Zahlen darstellen zu können. Der Wert B selbst wird durch eine 1 auf der nächsthöheren Stelle ausgedrückt.
Nach diesen Kriterien ist etwa das römische Zahlensystem kein Stellenwertsystem. Das folgende Beispiel zeigt anschaulich, warum nicht:
In den beiden Zahlen II (2) und IV (4) steht die vordere Ziffer I (Wert 1) an derselben Stelle, nämlich der zweiten von rechts. Aber im ersten Fall bedeutet sie, dass 1 addiert werden soll, während sie bei der zweiten Zahl aussagt, dass 1 abgezogen wird. Die (absolute) Position des Zahlzeichens innerhalb der Zahl ist also kein Kriterium für seinen Wert.
Für die Arbeit mit Computern haben die folgenden Zahlensysteme eine besondere Bedeutung:
- Das Dezimalsystem: Computer haben eigentlich überhaupt nichts mit dem Dezimalsystem (Zehnersystem) zu
tun, das im Alltag verwendet wird. Allerdings erfolgt die Ein- und Ausgabe von Zahlen
üblicherweise in dieser Form, weil sie für die Benutzer am angenehmsten ist.
Das Dezimalsystem verwendet die Basis B = 10, sodass der Wert der ersten Stelle (ganz rechts) 1 ist und sich mit jeder Stelle verzehnfacht. Natürlich machen Sie sich diese Gedanken beim Dezimalsystem nicht, weil Sie als kleines Kind gelernt haben, damit umzugehen. Formal betrachtet könnte man eine Dezimalzahl dennoch so analysieren, wie es in Tabelle 2.7 am Beispiel der Zahl 3.479 gezeigt wird.
Ziffer 3
4
7
9
Stellenwert 1000
100
10
1
Schema 103
102
101
100
Gesamtwert 3000
400
70
9
- Das Dualsystem: Dieses System ist für den Computer selbst das wichtigste, weil er intern damit arbeitet.
Wie Sie im Abschnitt »Binäre Speicherung verschiedener Daten«, genauer sehen werden,
betrifft dies allerdings bei Weitem nicht alle binär codierten Daten.
Das Dualsystem verwendet die Basis B = 2. Demzufolge hat eine Stelle immer den doppelten Wert der weiter rechts gelegenen Stelle, und es werden zwei verschiedene Ziffern benötigt: 0 und 1. Genau aus diesem Grund ist das System gut für einen digitalen Rechner geeignet, dessen elektronische Bauteile binär arbeiten (fließt Strom oder nicht?). Tabelle 2.8 zeigt ein Beispiel für den Aufbau einer Dualzahl. Den dezimalen Wert der Zahl 101011 erhalten Sie, wenn Sie die Werte in der Zeile »Gesamtwert« addieren – das Ergebnis ist 43.
Ziffer 1
0
1
0
1
1
Stellenwert 32
16
8
4
2
1
Schema 25
24
23
22
21
20
Gesamtwert 32
0
8
0
2
1
Das Dualsystem ist das einfachste aller Zahlensysteme, da der Stellenwert hier nie mit einem Ziffernwert multipliziert werden muss: Die Stelle ist entweder gesetzt (Wert 1), sodass der Stellenwert selbst gilt, oder nicht gesetzt (Wert 0) – in diesem Fall gilt eben die 0.
- Das Oktalsystem: Es ist recht unbequem, Dualwerte ins Dezimalsystem umzurechnen und umgekehrt. Größere
Dualzahlen sind dagegen äußerst unhandlich. Daher verwenden Informatiker gern Zahlensysteme,
deren Zahlen sich leicht in Dualzahlen umwandeln lassen. Das ist bei Systemen der
Fall, deren Basis in der Folge der Zweierpotenzen vorkommt, die die Stellenwerte des
Dualsystems bilden. Eines dieser beiden Systeme ist das Oktalsystem (Achtersystem),
das andere das als Nächstes vorgestellte Hexadezimalsystem (Sechzehnersystem).
Das Oktalsystem hat die Basis B = 8. Es gibt demzufolge acht verschiedene Ziffern (0 bis 7), und jede Stelle besitzt den achtfachen Stellenwert der weiter rechts stehenden. In Tabelle 2.9 sehen Sie ein Beispiel für die systematische Analyse einer Oktalzahl. Der dezimale Wert der Oktalzahl 4361 ist übrigens 2.289.
Ziffer 4
3
6
1
Stellenwert 512
64
8
1
Schema 83
82
81
80
Gesamtwert 2048
192
48
1
- Das Hexadezimalsystem: Das beliebteste Zahlensystem zur Darstellung von Speicheradressen, Zeichencodes und
sonstigen Byte-Inhalten ist das Hexadezimalsystem (Sechzehnersystem). Der Name ist
ein wenig inkonsequent aus dem griechischen Partikel hexa (sechs) und dem lateinischen dezimal (zu »decem« für »zehn«) zusammengesetzt; eine rein aus dem Lateinischen abgeleitete,
allerdings weniger gebräuchliche Bezeichnung ist Sedezimalsystem.
Es handelt sich um ein Stellenwertsystem mit der Basis 16. Eine Stelle hat immer den sechzehnfachen Wert der weiter rechts stehenden Stelle. Etwas problematisch ist die Tatsache, dass 16 verschiedene Ziffern mit den Werten 0 bis 15 benötigt werden: Da es nur die Ziffern 0 bis 9 gibt, werden die restlichen durch A bis F (für 10 bis 15) dargestellt. Tabelle 2.10 zeigt ein Beispiel für die Analyse der Hexadezimalzahl 3AB4, deren dezimaler Wert 15.028 beträgt.
Ziffer 3
A
B
4
Einzelwert 3
10
11
4
Stellenwert 4096
256
16
1
Schema 163
162
161
160
Gesamtwert 12.288
2.560
176
4
Methoden zur Umrechnung von Zahlensystemen
Auch wenn es zahlreiche Computerprogramme gibt, die Ihnen das Umrechnen der Zahlensysteme abnehmen, ist es nützlich, die entsprechenden Rechenverfahren zu kennen – beispielsweise bildet die Kenntnis dieser Methoden die Grundlage dafür, solche Programme selbst schreiben zu können!
Dezimalzahlen können Sie folgendermaßen in Dualzahlen umrechnen – als Beispiel wird die Zahl 374 verwendet:
- Suchen Sie die größte in der Zahl vorkommende Zweierpotenz (2n), eventuell durch Ausprobieren (fortgesetztes Verdoppeln von 2). Bei 374 wäre dies 256 (28). Damit wissen Sie auch bereits, dass das Ergebnis neun Stellen hat (28 bis 20).
- Ziehen Sie die entsprechende Zweierpotenz von der Gesamtzahl ab, und notieren Sie im Ergebnis als vorderste Stelle eine 1. Von 374 bliebe nach diesem Schritt noch 118 übrig.
- Kommt die nächstniedrigere Zweierpotenz in der Zahl vor? Falls dem so ist, notieren Sie wieder eine 1 und ziehen die Zweierpotenz von der Zahl ab. Kommt sie dagegen nicht vor, notieren Sie eine 0. In der 118, die im vorigen Schritt als Rest geblieben ist, kommt die 128 nicht vor. Der bisher notierte Teil des Ergebnisses lautet also 10.
- Gehen Sie nach dem Schema in Punkt 3 die Reihe der Zweierpotenzen bis hinunter zur
1 durch beziehungsweise bis zu dem Punkt, wo die umzurechnende Zahl 0 geworden ist.
Im letzteren Fall müssen Sie natürlich noch die Stellen von der aktuellen Zweierpotenz
bis hinunter zur 1 mit Nullen füllen. Die nächsten Schritte beim Zerlegen der Zahl
118 sehen folgendermaßen aus:
- 64 kommt in 118 vor. Bisheriges Ergebnis: 101; Rest: 54.
- 32 kommt in 54 vor. Ergebnis: 1011; Rest: 22.
- 16 kommt in 22 vor. Ergebnis: 10111; Rest: 6.
- 8 kommt in 6 nicht vor. Ergebnis: 101110.
- 4 kommt in 6 vor. Ergebnis: 1011101; Rest 2.
- 2 kommt in 2 vor. Ergebnis: 10111011; Rest 0.
- Zum Schluss wird noch eine 0 für die nicht besetzte Stelle 20 angehängt. Endergebnis: 101110110.
Das Umrechnen von Dualzahlen in Dezimalzahlen funktioniert sogar noch einfacher: Addieren Sie einfach die Stellenwerte derjenigen Stellen, die den Wert 1 haben – am einfachsten geht das, wenn Sie rechts bei 20 anfangen.
Beispiel: 1010101 soll ins Dezimalsystem umgerechnet werden. Mit 1 besetzt sind hier die Stellen 20, 22, 24 und 26. Dies ergibt die folgende Addition:
1 + 4 + 16 + 64 = 85
Dezimalzahlen in Oktal- oder Hexadezimalzahlen umzurechnen ist ein wenig komplizierter als das Umrechnen in Dualzahlen. Die Schwierigkeit besteht darin, dass jede Stelle mit unterschiedlichen Ziffern besetzt werden kann und deshalb die einfache Überprüfung, ob der jeweilige Stellenwert in der Zahl vorkommt, nicht ausreicht.
Als Beispiel sehen Sie hier das Verfahren der Umrechnung von Hexadezimalzahlen in Dezimalzahlen; bei Oktalzahlen funktioniert es schematisch gesehen genauso. Als Beispiel soll die Zahl 2.345 in eine Hexadezimalzahl umgerechnet werden.
- Finden Sie die kleinste Sechzehnerpotenz, die größer als die umzurechnende Zahl ist – dadurch wissen Sie, dass die höchste besetzte Hexadezimalstelle Ihrer Zahl um einen Schritt darunterliegt. Bei 2345 ist die erste größere Hexadezimalstelle 163 (4096). Begonnen wird also bei 162 (256).
- Dividieren Sie die Zahl durch den soeben ermittelten höchsten Stellenwert. Das ganzzahlige Ergebnis dieser Division ist der gesuchte Ziffernwert, den Sie an der vordersten Stelle notieren können – denken Sie daran, dass Werte ab 10 als A bis F geschrieben werden. Mit dem Rest der Division wird im nächsten Schritt weitergearbeitet. 2345 : 256 = 9, Rest 41. Der Ziffernwert für die Stelle ist also 9, mit 41 wird weitergerechnet.
- Führen Sie Schritt 2 wiederholt für die restlichen Stellen bis hinunter zu 160 (1) durch. Bei 41 ergeben sich die folgenden Schritte:
- 41 : 16 = 2, Rest 9. Der Wert der nächsten Stelle ist 2, sodass das bisherige Ergebnis 92 lautet.
- Den Rest aus dem vorherigen Schritt, 9, können Sie einfach als Ziffernwert hinschreiben, da es sich um die Einerstelle handelt. Das Endergebnis ist also 929.
Wenn Sie umgekehrt Hexadezimalzahlen in Dezimalzahlen umrechnen möchten, müssen Sie nur dem Schema aus Tabelle 2.10 folgen: Multiplizieren Sie den jeweiligen Ziffernwert einfach mit dem Wert seiner Stelle, und addieren Sie die Ergebnisse. Beispielsweise lässt sich die Zahl ABCD folgendermaßen umrechnen:
ABCD
= 10 × 163 + 11 × 162 + 12 × 161 + 13 × 160
= 10 × 4096 + 11 × 256 + 12 × 16 + 13
= 40960 + 2816 + 192 + 13
= 43981
Oktalzahlen lassen sich übrigens sehr leicht in Dualzahlen umrechnen und umgekehrt, was schließlich der Hauptgrund für die Verwendung des Oktalsystems ist: Von rechts aus gesehen entsprechen je drei Dualstellen einer Oktalstelle; die Umrechnung dieser Dreiergruppen erfolgt nach dem folgenden festen Schema:
dual |
000 |
001 |
010 |
011 |
100 |
101 |
110 |
111 |
oktal |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Die Umrechnung von Hexadezimalzahlen in Dualzahlen und umgekehrt ist genau so einfach – je vier Dualstellen von rechts ab entsprechen jeweils einer Hexadezimalstelle, umgerechnet wird nach dem folgenden Schema:
Schreibweise der Zahlen verschiedener Systeme
In der Mathematik wird die Basis des jeweiligen Zahlensystems in der Regel als Index (kleine tiefgestellte Zahl) angegeben. Hier einige Beispiele:
(1010101)2
(7654)8
(9AB2)16
In der Programmiersprache C und allen davon abstammenden Sprachen werden Oktalzahlen durch eine vorangestellte 0 gekennzeichnet:
0234 bedeutet (234)8, also dezimal 156.
Hexadezimalzahlen werden in C durch ein vorangestelltes 0x gekennzeichnet:
0x234 steht für (234)16 oder umgerechnet (564)10.
In der Programmiersprache Ruby gibt es eine ähnliche Schreibweise für Dualzahlen, die in den meisten anderen Sprachen nicht vorhanden ist: Stellen Sie dem Dualwert 0b voran. Beispiel:
0b10101 bedeutet (10101)2 beziehungsweise (21)10.
2.2.2 Bits und Bytes
Eine einzelne Binärstelle, die ein Rechner speichert, wird als Bit bezeichnet. Das ist die Abkürzung für »binary digit«, also Binärziffer. Es handelt sich um die kleinste Informationseinheit, die ein Computer verarbeiten kann – gleichzeitig ist es auch die kleinste vorstellbare Informationseinheit. Um überhaupt Daten darstellen zu können, benötigt man einen Zeichencode oder ein »Alphabet« aus mindestens zwei Elementen.
Natürlich könnte man Zahlen oder andere Daten auch einfach durch »Strichlisten« darstellen – eine bestimmte Anzahl des immer gleichen Informationselements steht für das jeweilige Symbol. Aber spätestens zur Darstellung der Lücke zwischen zwei auf diese Weise codierten Symbolen wäre dann doch wieder eine zweite Informationsart erforderlich.
Bytes und Maschinenwörter
Die Speicherstellen, in denen Daten im Computer verwahrt werden, können durch Nummern angesprochen (adressiert) werden. Es wäre ineffizient und schwer realisierbar, jedem einzelnen Bit eine eigene Speicheradresse zuzuweisen. Aus diesem Grund werden mehrere von ihnen zu einer Einheit zusammengefasst, die eine gemeinsame Adresse erhält. Wenn der Prozessor den Inhalt einer Speicherstelle lesen möchte, erhält er jeweils den Wert all dieser Bits; genauso muss er beim Schreiben Werte für alle Bits eines solchen Speicherbereichs liefern.
Im Lauf der Computergeschichte war man sich lange Zeit nicht darüber einig, wie groß eine adressierbare Speicherstelle sein soll. Es gab im Grunde alle Varianten von 4 bis 36 Bit – darunter auch Werte, die man aus der Binärperspektive als »schräg« bezeichnen muss, wie die im vorigen Kapitel erwähnten 22 Bit der Z3 von Konrad Zuse oder die 18 Bit des berühmten PDP-7-Rechners von DEC, auf dem die ursprüngliche Version des Betriebssystems Unix entwickelt wurde. Die Speicherblöcke der individuellen Größe, mit denen ein bestimmter Computer arbeitet, werden als Maschinenwörter bezeichnet. Die Anzahl der Bits eines solchen Maschinenworts wird die Wortbreite des jeweiligen Prozessors genannt.
Erst in den 70er-Jahren einigte man sich darauf, bei jedem Computer die Adressierung 8 Bit großer Blöcke zu ermöglichen. Diese Blöcke werden als Byte bezeichnet. Dennoch besitzt jeder Prozessor seine eigene Wortbreite – es handelt sich um die Anzahl der Datenleitungen, mit denen er Bits parallel mit seiner Umgebung austauschen kann, sowie um die Anzahl der Bits innerhalb seiner Register (Rechenzellen). Die Wortbreiten von Prozessoren werden in Kapitel 3, »Hardware«, genau erläutert.
Die nächsten Vielfachen des standardisierten, 8 Bit großen Bytes haben ebenfalls festgelegte Namen: 16 Bit werden als Word bezeichnet (nicht zu verwechseln mit dem individuell unterschiedlichen Maschinenwort), während 32 Bit DoubleWord (DWord) heißen.
Messung von Speichermengen
Genau wie die physikalischen Maßeinheiten werden auch für das Byte Vervielfältigungen verwendet, die große Mengen mit einer speziellen Vorsilbe zusammenfassen. Allerdings sind Kilobyte, Megabyte und so weiter nicht jeweils das Tausendfache (Faktor 103) der vorigen Einheit, sondern es wird mit dem binärverträglicheren Wert 210 (1.024) gerechnet.[Anm.: Da die Vorsilben Kilo-, Mega- und so weiter gemäß dem Internationalen Maßeinheitensystem (SI) als dezimal genormt sind, wurden vor einigen Jahren die Bezeichnungen Kibi-, Mebi-, Gibi- und so weiter für die 1.024er-Stufen eingeführt (das »bi« steht darin für »binary«). Die entsprechenden Abkürzungen erhalten ein zusätzliches i (KiB, MiB und so weiter). Dies ist zwar offizieller Standard, hat sich aber im Alltag der Informatik nicht durchgesetzt.] Tabelle 2.13 zeigt eine Übersicht über die Vervielfältigungen des Bytes.
Die Hersteller von Laufwerken und Datenträgern führen ihre Kunden übrigens in gewisser Weise in die Irre: Sie verwenden dezimale Abkürzungen wie MB und GB für die Angabe der Kapazität ihrer Geräte, um diese als Vielfache von 1.000 angeben zu können: 1 »MB« ist kein Megabyte im Sprachgebrauch der Informatik, sondern in der Angabe der technischen Daten von Festplatten 1 Million Byte; 1 »GB« ist 1 Milliarde Byte und so weiter. Aus diesem Grund ist beispielsweise eine Festplatte mit der Größenangabe 300 GB tatsächlich nur etwa 286 Gigabyte groß.
Anders verhält es sich übrigens mit den Vielfachen des Bits, die für die Speicherkapazität einzelner Mikrochips sowie als Bit pro Sekunde zur Angabe der Geschwindigkeit serieller Leitungen verwendet werden: 1 Kilobit (KBit) beträgt 1.000 Bit, 1 Megabit (MBit) ist eine Million Bit groß und 1 Gigabit (GBit) sind 1 Milliarde Bit.
Binäre Speicherung verschiedener Daten
Die nächstliegende Verwendung der Bits einer Speicherzelle ist natürlich die Speicherung von Dualzahlen. Für ganze Zahlen wird dieses Verfahren tatsächlich eingesetzt. Allerdings gibt es zwei Arten der Speicherung solcher Zahlen: mit Vorzeichen (signed) und ohne Vorzeichen (unsigned). Wenn eine Dualzahl ohne Vorzeichen in einem Feld mit einer bestimmten Anzahl von Bits gespeichert wird, ist der Wertebereich unmittelbar erkennbar: Bei 8 Bit sind es beispielsweise 28 = 256 verschiedene Werte, die als Zahlen von 0 bis 255 interpretiert werden. Die Belegung 0000 0000 bedeutet dabei 0, 1111 1111 steht für 255. Allgemeiner können Sie mit n Bit 2n verschiedene Werte darstellen, in diesem Fall die Zahlen von 0 bis 2n–1.
Komplizierter wird es bei vorzeichenbehafteten Zahlen. Unmittelbar einzusehen ist, dass das vorderste, also höchstwertige Bit für das Vorzeichen stehen sollte. Wenn dieses Bit auf 0 steht, um eine positive Zahl auszudrücken, und 1 wird, wenn die Zahl negativ ist, können bei n Bit die Zahlen 0 bis 2n–1–1 durch dieselbe Bit-Belegung dargestellt werden wie bei einer vorzeichenlosen Speicherung; bei 8 Bit sind dies die Zahlen 0 bis 127. Um nun den restlichen Platz auf praktische Weise auf die negativen Zahlen zu verteilen, kehrt man die Bit-Belegung des jeweiligen Absolutwerts um und addiert dann 1 – in einem 8 Bit großen Speicherbereich, in dem eine vorzeichenbehaftete Zahl gespeichert wird, steht 1111 1111 auf diese Weise für –1; vom Wert 1 (die sieben Bits 000 0001) wird die Umkehrung gebildet (111 1110). Die anschließende Addition von 1 ergibt 111 1111. Der Vorteil dieses Verfahrens, das als Zweierkomplement bezeichnet wird, besteht darin, dass die Zahlen in korrekter Reihenfolge aufeinanderfolgen. [[Anm.: Noch genauer gesagt hat wirklich jede Zahl einen eindeutigen Nachfolger; deshalb wird eine solche Art der Zahlendarstellung auch als Raumfolgearithmetik (Sequence Space Arithmetics) bezeichnet.] Abbildung 2.1 verdeutlicht dies an den Verhältnissen in einer 4 Bit breiten Speicherzelle. In Abbildung 2.2 wird dasselbe Phänomen erheblich unterhaltsamer für 16-Bit-Ganzzahlen demonstriert.
Abbildung 2.1 Die Verwendung von 4 Bit zur Speicherung positiver und negativer ganzer Zahlen
Abbildung 2.2 Die Raumfolgearithmetik in humorvollerer Darstellung, hier mit 16-Bit-Ganzzahlen. Quelle: http://www.xkcd.com/571/, mit freundlicher Genehmigung des Autors
In Tabelle 2.14 sehen Sie, welche Wertebereiche man mit diversen Wortbreiten abdecken kann, jeweils einmal für vorzeichenlose und für vorzeichenbehaftete Werte.
Daneben kennen Computer auch andere Arten der binären Codierung. Es gibt beispielsweise unterschiedliche Verfahren zur Speicherung von Fließkommazahlen. Diese Zahlen werden so genannt, weil das Komma in ihnen frei verschiebbar ist und sie auf diese Weise unterschiedliche Anzahlen von Nachkommastellen haben. Die Alternative sind Festkommazahlen (mit einer festgelegten Anzahl von Nachkommastellen), deren Verwendung sich beispielsweise für das Rechnen mit Währungsbeträgen anbietet.
Fließkommazahlen, manchmal auch Gleitkommazahlen genannt (Floating Point Numbers), werden grundsätzlich in der »wissenschaftlichen Schreibweise« (Exponentialschreibweise) gespeichert. In einigen Beispielen weiter oben wurde diese Art der Zahlendarstellung bereits intuitiv verwendet. In der Mathematik wird eine Zahl in dieser Form als Vielfaches einer Zehnerpotenz dargestellt. Beispielsweise könnte man 0,0000378 auch als 3,78 × 10–5 schreiben; 2.451.000.000 ließe sich dagegen etwa als 2,451 × 109 darstellen. Der Wert vor dem Multiplikationszeichen wird übrigens als Mantisse bezeichnet, die Hochzahl heißt Exponent. Bei einer bekannten Basis (hier 10) genügen diese beiden Angaben zur Darstellung einer Zahl. In vielen Programmiersprachen kann 3,78 × 10–5 deshalb zum Beispiel als 3.78E–5 geschrieben werden; 2,451 × 109 wäre 2.451E+9 (das E steht für »Exponent«).
Aufgrund der binären Natur des Rechners werden zur internen Speicherung natürlich keine Zehnerpotenzen eingesetzt, sondern Zweierpotenzen. Die gesamte Bitbreite wird dazu aufgeteilt: 1 Bit für das Vorzeichen der Mantisse, eine beliebige Bitanzahl für deren Nachkommastellen, 1 Bit für das Vorzeichen des Exponenten und die restlichen Bits für dessen Wert (für beide Komponenten wird wiederum die Zweierkomplementschreibweise eingesetzt).
Die Größe des Exponenten wird dabei so gewählt, dass die Mantisse »normalisiert« wird, das heißt genau eine Stelle vor dem Komma bildet. Da die Darstellung im Computer dual ist, ist der Wert der Mantisse immer 1 und braucht daher nicht gespeichert zu werden.
Da einige Zahlen, die im Dezimalsystem abbrechend wären, im Dualsystem periodisch sind (und umgekehrt), kommt es beim Rechnen mit Fließkommazahlen mitunter zu Rundungsfehlern.
Eine weitere Art der binären Codierung sind BCD-Werte (Binary Coded Decimals): Es handelt sich um eine ineffektive, da Speicherplatz verschwendende Art der Speicherung von Dezimalzahlen, die aber mitunter das Rechnen im Dezimalsystem beschleunigt. Dabei machen vier Bit jeweils eine Dezimalzahl aus. Betrachten Sie als Beispiel die Zahl 354: In dualer Darstellung hat sie den Wert 101100010. Als BCD-Zahl werden die drei Ziffern der Zahl dagegen einzeln als 4 Bit große Dualzahlen geschrieben, sodass sich 0011.0101.0100 ergibt (die Punkte dienen nur der Verdeutlichung).
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.