Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Einführung
2 Mathematische und technische Grundlagen
3 Hardware
4 Netzwerkgrundlagen
5 Betriebssystemgrundlagen
6 Windows
7 Linux
8 Mac OS X
9 Grundlagen der Programmierung
10 Konzepte der Programmierung
11 Software-Engineering
12 Datenbanken
13 Server für Webanwendungen
14 Weitere Internet-Serverdienste
15 XML
16 Weitere Datei- und Datenformate
17 Webseitenerstellung mit (X)HTML und CSS
18 Webserveranwendungen
19 JavaScript und Ajax
20 Computer- und Netzwerksicherheit
A Glossar
B Zweisprachige Wortliste
C Kommentiertes Literatur- und Linkverzeichnis
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
IT-Handbuch für Fachinformatiker von Sascha Kersken
Der Ausbildungsbegleiter
Buch: IT-Handbuch für Fachinformatiker

IT-Handbuch für Fachinformatiker
Rheinwerk Computing
1216 S., 6., aktualisierte und erweiterte Auflage, geb.
34,90 Euro, ISBN 978-3-8362-2234-1
Pfeil 2 Mathematische und technische Grundlagen
Pfeil 2.1 Einführung in die Logik
Pfeil 2.1.1 Aussagen
Pfeil 2.1.2 Aussageformen
Pfeil 2.1.3 Logische Verknüpfungen
Pfeil 2.1.4 Mengenoperationen
Pfeil 2.1.5 Weitere wichtige Berechnungsverfahren
Pfeil 2.2 Informationsspeicherung im Computer
Pfeil 2.2.1 Zahlensysteme
Pfeil 2.2.2 Bits und Bytes
Pfeil 2.3 Elektronische Grundlagen
Pfeil 2.3.1 Einfache Schaltungen
Pfeil 2.3.2 Zusammengesetzte Schaltungen
Pfeil 2.4 Automatentheorien und -simulationen
Pfeil 2.4.1 Algorithmen
Pfeil 2.4.2 Die Turing-Maschine
Pfeil 2.4.3 Der virtuelle Prozessor
Pfeil 2.5 Zusammenfassung

Rheinwerk Computing - Zum Seitenanfang

2.2 Informationsspeicherung im ComputerZur nächsten Überschrift

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.


Rheinwerk Computing - Zum Seitenanfang

2.2.1 ZahlensystemeZur nächsten ÜberschriftZur vorigen Überschrift

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.

    Tabelle 2.7 Schematische Darstellung einer Dezimalzahl

    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.

    Tabelle 2.8 Schematische Darstellung einer Dualzahl

    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.

    Tabelle 2.9 Schematische Darstellung einer Oktalzahl

    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.

    Tabelle 2.10 Schematische Darstellung einer Hexadezimalzahl

    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:

  1. 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).
  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 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 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.

  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 darunterliegt. 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.

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:

Tabelle 2.11 Schema der Umrechnung von Dualzahlen in Oktalzahlen und umgekehrt

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:

Tabelle 2.12 Schema der Umrechnung von Dualzahlen in Hexadezimalzahlen und umgekehrt

dual

0000

0001

0010

0011

0100

0101

0110

0111

hexadezimal

0

1

2

3

4

5

6

7

dual

1000

1001

1010

1011

1100

1101

1110

1111

hexadezimal

8

9

A

B

C

D

E

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 (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.


Rheinwerk Computing - Zum Seitenanfang

2.2.2 Bits und BytesZur nächsten ÜberschriftZur vorigen Überschrift

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.

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)

1.024

1

Megabyte (MByte)

1.048.576

1.024

1

Gigabyte (GByte)

1.073.741.824

1.048.576

1.024

Terabyte (TByte)

1.099.511.627.776

1.073.741.824

1.048.576

Petabyte (PByte)

> 1,1258999 × 1015

1.099.511.627.776

1.073.741.824

Exabyte (EByte)

> 1,152921 × 1018

> 1,1258999 × 1015

1.099.511.627.776

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

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

Abbildung

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.

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 × 1019
(über 18 Trillionen)

Zu groß, um im Normalfall sinnvoll zu sein.

Speicherbereiche dieser Breite werden viel häufiger zur Darstellung besonders genauer Fließkommazahlen eingesetzt.

128

> 3,402824 × 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, 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.

>> Zum Feedback-Formular
<< zurück




Copyright © Rheinwerk Verlag GmbH 2013
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.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de


  Zum Katalog
Zum Katalog: IT-Handbuch für Fachinformatiker






IT-Handbuch für Fachinformatiker
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: Linux Handbuch






 Linux Handbuch


Zum Katalog: Computer Netzwerke






 Computer Netzwerke


Zum Katalog: Schrödinger lernt HTML5, CSS3 und JavaScript






 Schrödinger lernt
 HTML5, CSS3
 und JavaScript


Zum Katalog: Windows 8.1 Pro






 Windows 8.1 Pro


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo