Galileo Computing < openbook >
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.


Kompendium der Informationstechnik
 von Sascha Kersken
EDV-Grundlagen, Programmierung, Mediengestaltung
Buch: Kompendium der Informationstechnik
gp Kapitel 2 Mathematische und technische Grundlagen
  gp 2.1 Einführung in die Logik
    gp 2.1.1 Aussagen
    gp 2.1.2 Aussageformen
    gp 2.1.3 Logische Verknüpfungen
    gp 2.1.4 Mengenoperationen
  gp 2.2 Informationsspeicherung im Computer
    gp 2.2.1 Bits und Bytes
  gp 2.3 Elektronische Grundlagen
    gp 2.3.1 Einfache Schaltungen
    gp 2.3.2 Zusammengesetzte Schaltungen
  gp 2.4 Automatentheorien und -simulationen
    gp 2.4.1 Algorithmen
    gp 2.4.2 Die Turing-Maschine
    gp 2.4.3 Der virtuelle Prozessor
  gp 2.5 Zusammenfassung

gp

Prüfungsfragen zu diesem Kapitel (extern)


Galileo Computing

2.2 Informationsspeicherung im Computer  downtop

Wie Sie bereits in der Einführung erfahren haben und wahrscheinlich bereits 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.


Galileo Computing

2.2.1 Bits und Bytes  toptop

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.

Weniger Information als 1 Bit?

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 andere Informationsart erforderlich.

Zahlensysteme

Für das Verständnis der Speicherung von Werten im Computern benötigen Sie Kenntnisse der verschiedenen Zahlensysteme. Bereits in Kapitel 1, Einleitung, wurde die Bedeutung der Stellenwertsysteme als Voraussetzung für die Erfindung von Rechenmaschinen und Computern hervorgehoben.

Stellenwertsysteme

In einem Stellenwertsystem hängt der Wert einer einzelnen Ziffer von zwei Faktoren ab: ihrem Eigenwert und ihrer Position in 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 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 Position des Zahlzeichens in der Zahl ist also kein Kriterium für seinen Wert.

Für die Arbeit mit Computern haben die folgenden Zahlensysteme eine besondere Bedeutung:

gp  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 3479 gezeigt wird.
       

Tabelle 2.7   Schematische Darstellung einer Dezimalzahl

Ziffern 3 4 7 9
Stellenwert 1000 100 10 1
Schema 10 10 10 10
Gesamtwert 3000 400 70 9

gp  Das Dualsystem. Dieses System ist für den Computer selbst das wichtigste, weil er intern damit arbeitet. Wie Sie weiter unten genauer sehen werden, betrifft dies allerdings bei weitem nicht alle binär codierten Daten.
    Das Dualsystem vewendet 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 Ergenis ist 43.
       

Tabelle 2.8   Schematische Darstellung einer Dualzahl

Ziffern 1 0 1 0 1 1
Stellenwert 32 16 8 4 2 1
Schema 2 2 2 2 2 2
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.
       
gp  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 unten vorgestellte Hexadezimalsystem.
    Das Oktalsystem hat die Basis B=8. Es gibt demzufolge 8 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 2289.
       

Tabelle 2.9   Schematische Darstellung einer Oktalzahl

Ziffern 4 3 6 1
Stellenwert 512 64 8 1
Schema 8 8 8 8
Gesamtwert 2048 192 48 1

gp  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« zusammengesetzt; eine rein lateinische, 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 gelegenen 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 einer Hexadezimalzahl, deren dezimaler Wert 15.028 beträgt.
       

Tabelle 2.10   Schematische Darstellung einer Hexadezimalzahl

Ziffern 3 A B 4
Einzelwert 3 10 11 4
Stellenwert 4096 256 16 1
Schema 16 16 16 16
Gesamtwert 12.288 2560 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!

Dezimal nach Dual

Dezimalzahlen können Sie folgendermaßen in Dualzahlen umrechnen – als Beispiel wird die Zahl 374 verwendet:

1. Suchen Sie die größte in der Zahl vorkommende Zweierpotenz (2n), eventuell durch Ausprobieren (fortgesetztes Verdoppeln von 2). Bei 374 wäre dies die 256 (28).
       
2. 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.
       
3. Kommt die nächstniedrigere Zweierpotenz in der Zahl vor? Falls dem so ist, notieren Sie wieder eine 1 und ziehen Sie 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.
       
4. 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 2 angehängt. Endergebnis: 101110110.

Dual nach Dezimal

Das Umrechnen von Dualzahlen in Dezimalzahlen funktioniert sogar noch einfacher: Addieren Sie einfach die Stellenwerte derjenigen Stellen auf, die den Wert 1 haben – am einfachsten geht das, wenn Sie rechts bei 2 anfangen.

Beispiel: 1010101 soll ins Dezimalsystem umgerechnet werden. Mit 1 besetzt sind hier die Stellen 2, 2, 2 und 2. 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.

Dezimal nach Hexadezimal

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 2345 in eine Hexadezimalzahl umgerechnet werden.

1. 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 darunter liegt. Bei 2345 ist die erste größere Hexadezimalstelle 163 (4096). Begonnen wird also bei 162 (256).
       
2. 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.
       
3. 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.

Hexadezimal nach Dezimal

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 zusammen. Beispielsweise lässt sich die Zahl ABCD folgendermaßen umrechnen:

ABCD = 10 x 16 + 11 x 16 + 12 x 16 + 13 x 16 = 10 x 4096 + 11 x 256 + 12 x 16 + 13 = 40.960 + 2816 + 192 + 13 = 43.981

Oktal nach Dual

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 an gesehen entsprechen je drei Dualstellen einer Oktalstelle; die Umrechnung dieser Dreiergruppen erfolgt nach dem folgenden festen Schema:


Tabelle 2.11   Schema der Umrechnung von Dualzahlen in Oktalzahlen und umgekehrt

Dual Oktal Dual Oktal
000 0 100 4
001 1 101 5
010 2 110 6
011 3 111 7

Hexadezimal nach Dual

Die Umrechnung von Hexadezimalzahlen in Dualzahlen und umgekehrt ist genau so einfach: Je 4 Dualstellen von rechts an entsprechen jeweils einer Hexadezimalstelle, umgerechnet wird fest nach dem folgenden Schema:


Tabelle 2.12   Schema der Umrechnung von Dualzahlen in Hexadezimalzahlen und umgekehrt

Dual Hexadezimal Dual Hexadezimal
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

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 (308)10.
       

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.

Wortbreiten

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 Bits – darunter auch Werte, die man aus der Binärperspektive als »schräg« bezeichnen muss, wie die im vorigen Kapitel erwähnten 22 Bits der Z3 von Konrad Zuse oder die 18 Bits 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 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, Die 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 10) der vorigen Einheit, sondern es wird mit dem binärverträglicheren Wert 210  (1024) gerechnet. Tabelle 2.13 zeigt eine Übersicht über die Vervielfältigungen des Bytes.


Tabelle 2.13   Übersicht über die Vervielfältigungseinheiten des Bytes

Maßeinheit Wert in Byte Wert in KByte Wert in MByte
Byte 1
Kilobyte (KByte) 1024 1
Megabyte (MByte) 1.048.576 1024 1
Gigabyte (GByte) 1.073.741.824 1.048.576 1024
Terabyte (TByte) 1.099.511.627.776 1.073.741.824 1.048.576
Petabyte (PByte) > 1,1258999 x 1015  1.099.511.627.776 1.073.741.824
Exabyte (EByte) > 1,152921 x 1018  > 1,1258999 x 1015  1.099.511.627.776

MB ist nicht MByte!

Die Hersteller von Laufwerken und Datenträgern führen ihre Kunden übrigens in gewisser Weise in die Irre: Sie verwenden inoffizielle Abkürzungen wie MB und GB für die Angabe der Kapazität ihrer Geräte, um diese als Vielfache von 1000 angeben zu können: 1 »MB« ist kein Megabyte, 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 120 GB nur 112 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 1000 Bits, 1 Megabit (MBit) ist eine Million Bits groß und 1 Gigabit (GBit) 1 Milliarde Bits.

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 (englisch 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 erkenntlich: Bei 8 Bits sind es beispielsweise 2 = 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 2 verschiedene Werte darstellen, in diesem Fall die Zahlen von 0 bis 2–1.

Dualzahlen mit Vorzeichen

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 Bits sind dies die Zahlen 0 bis 127.

Um nun den restlichen Platz auf praktische Weise auf die negativen Zahlen zu verteilen, zieht man 1 vom jeweiligen Absolutwert dieser Zahlen ab und kehrt die Bitbelegung um: 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 1 abgezogen, was 0 (000 0000) ergibt. Vertauscht man die Bits dieses Wertes, erhält man entsprechend 111 1111. Der Vorteil dieses Verfahrens, das als Zweierkomplement bezeichnet wird, besteht darin, dass die Zahlen in korrekter Reihenfolge aufeinander folgen. Abbildung 2.1 verdeutlicht dies an den Verhältnissen in einer 4 Bit breiten Speicherzelle.


Abbildung 2.1   Die Verwendung von 4 Bit zur Speicherung positiver und negativer ganzer Zahlen

Abbildung
Hier klicken, um das Bild zu Vergrößern


In Tabelle 2.14 sehen Sie, welche Wertebereiche man mit diversen Wortbreiten abdecken kann, jeweils einmal für vorzeichenlose und für vorzeichenbehaftete Werte.


Tabelle 2.14   Darstellungsmöglichkeiten von Ganzzahlen mit verschiedenen Bit-Anzahlen

Bits Anzahl Zustände Vorzeichenloser Wertebereich Vorzeichenbehafteter Wertebereich
4 16 0 bis 15 –8 bis +7
8 256 0 bis 255 –128 bis +127
16 65.536 0 bis 65.535 –32.768 bis +32.767
24 16.777.216 0 bis 16.777.215 –8.388.608 bis +8.388.607
32 4.294.967.296 0 bis 4.294.967.295 –2.147.483.648 bis +2.147.483.647
64 > 1,8446744 x 1019  (über 18 Trillionen) Zu groß, um häufig sinnvoll zu sein. Speicherbereiche dieser Breite werden viel häufiger zur Darstellung besonders genauer Fließkommazahlen eingesetzt.
128 > 3,402824 x 1038   

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

Fließkommazahlen, manchmal auch Gleitkommazahlen genannt (englisch 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 x 10-5  schreiben; 2.451.000.000 ließe sich dagegen etwa als 2,451 x 10 darstellen. Der Wert vor dem Mal-Zeichen 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 x 10-5  deshalb zum Beispiel als 3.78E–5 geschrieben werden; 2,451 x 10 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 bestimmte Anzahl von Bits für den absoluten Wert der Mantisse (negative Werte wie gehabt in Zweierkomplement-Schreibweise), 1 Bit für das Vorzeichen des Exponenten und die restlichen Bits für dessen Wert.

Angenommen, es stünden 16 Bits zur Verfügung (in der Praxis nur noch selten für Fließkommazahlen verwendet, da der Wertebereich zu klein ist). Diese 16 Bits ließen sich beispielsweise so aufteilen, dass 9 Bits auf den Absolutwert der Mantisse und 5 Bit auf den Absolutwert des Exponenten entfielen, natürlich jeweils plus 1 Bit für ihre jeweiligen Vorzeichen. Damit könnte die Mantisse Werte von -512 bis +511 annehmen, der Exponent wäre mit –32 bis +31 vertreten. Der größte absolut darstellbare Wert wäre 511 x 231  – aufgelöst wäre dies 1.097.364.144.128. Die kleinste Zahl über 0 wäre 1 x 2-32  , umgerechnet etwa 4,656613 x 10-10  . Die absolut kleinste negative Zahl, die man so darstellen kann, ist –512 x 231  , also -1.099.511.627.776.

BCD-Zahlen

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 4 Bits 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 Bits große Dualzahlen geschrieben, sodass sich 0011.0101.0100 ergibt (die Punkte dienen nur der Verdeutlichung).

  

Einstieg in PHP 5

Einstieg in Java

C von A bis Z

Einstieg in C++

Einstieg in Linux

Einstieg in XML

Apache 2




Copyright © Galileo Press GmbH 2004
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de