1.1.3. Digitale Zahlendarstellung#
Wie in vorhergehenden Kapitel beschrieben, werden digitale Informationen als diskrete Werte dargestellt. Hierzu wird zwischen der Darstellung von ganzen Zahlen und reellen Zahlen unterschieden. Im Folgenden werden beide Darstellungsformen vorgestellt.
Dualsystem#
Da in der digitalen Elektronik nur mit zwei Zuständen gerechnet wird, bietet sich das Dualsystem, auch genannt Binärsystem, zur Zahlendarstellung an. Beispiele für Zahlendarstellungen zur Basis 2, wobei der Index die Basis angibt:
510 = 1012
10710 = 11010112
263510 = 1010010010112
Damit lassen sich Zahlen als eine Reihe bzw. Abfolge von 0
/1
-Zuständen darstellen.
Hexadezimalsystem#
Bei Zahlen zur Basis 16 müssen auch Stellen, welche größer als 9 sind, abgebildet werden. Hierzu werden Buchstaben eingesetzt, um die Ziffern ‘10’, dargestellt durch A
, bis ‘15’ (F
) abzubilden. Eine oft verwendete Schreibweise für Zahlen im Hexadezimalsystem ist das Vorstellen von 0x
vor die Zahl, wie im folgenden Beispielen gezeigt:
510 = 516 = 0x5
10710 = 6B16 = 0x6B
263510 = A4B16 = 0xA4B
Binäre Maßeinheiten#
Da sich in der digitalen Welt alles um Potenzen von 2 dreht, haben sich aus technischen Gründen folgende Einheiten ergeben:
1 Bit = eine Ziffer im Binärsystem, Wertebereich: 0 und 1
1 Byte = acht Ziffern im Binärsystem, Wertebereich: 0 bis 255
Um größere Datenmengen praktischer anzugeben, werden folgende Einheiten genutzt:
1 KB = 1 kiloByte = 103 Byte
1 MB = 1 megaByte = 106 Byte
1 GB = 1 gigaByte = 109 Byte
1 TB = 1 teraByte = 1012 Byte
1 PB = 1 petaByte = 1015 Byte
Geschwindigkeit der Datenübertragung#
Die Geschwindigkeit mit der Daten übertragen werden können wird als Datenmenge pro Zeit angegeben. Hierbei wird die Zeit meist auf eine Sekunde bezogen. Beispielhaft sind hier einige Datenübertragungsraten beim Zugriff auf eine magnetische Festplatte (HDD) und auf ein Halbleiterlaufwerk (SSD) aufgeführt.
Lesen / Schreiben HDD: ~200 MB/s
Lesen / Schreiben SSD: ~500 MB/s
Als weiteres Beispiel können maximale Übertragunsraten in verschiedenen Netzwerken genannt werden:
über das Mobilfunknetz, z.B. 3G: 384 kbit/s
über ein Netzwerkkabel, z.B. Fast Ethernet: ~100 Mbit/s
Darstellung ganzer Zahlen#
Die Grundidee bei der digitalen Darstellung von Zahlen, hier ganze Zahlen, ist die Verwendung einer festen Anzahl von Bits. Diese bilden dann eine entsprechende Anazahl von Stellen im Dualsystem ab. Dieser Idee folgend, kann eine ganze Zahl mit Vorzeichen wie folgt als 8-Bit-Zahl dargestellt werden:
Für zwei Zahlen aus dem obigen Beispiel für die Zahldarstellung im Dualsystem könnte die Bitzuweisung wie folgt aussehen.
Durch die fixe Vorgabe der Stellen im Dualsystem, also hier der Bits, ergibt sich der Zahlenbereich, welcher mit diesen Bits abgebildet werden kann. Für die Darstellung von ganzen Zahlen mit 8 Bit, also mit einem Byte, ergibt sich somit
kleinste Zahl: 02 = 0
größte Zahl: 111111112 = 28-1 = 255 .
Natürlich können auch länger Bitfolgen für einen größeren Zahlenbereich genutzt werden. Zusätzlich kann eines der Bits auch genutzt werden, um das Vorzeichen darzustellen. Folgende Abbildung zeigt die Darstellung einer vorzeichenbehafteten ganzen Zahl mit 32 Bit.
Der Wertebereich ist in diesem Fall gegeben durch:
kleinste Zahl = -231 = -2,147,483,648
größte Zahl = 231 - 1 = 2,147,483,647 .
In der Informatik wird solch eine Darstellung von ganzen Zahlen als Integer Datentyp bezeichnet. Im Englischen wird dieser als integer bezeichnet.
Darstellung reeller Zahlen#
Reelle Zahlen können nur angenährt als eine Gleitkommazahl digital dargestellt werden. Dazu wir die zur Verfügung stehende Menge an Bits auf folgende Zuordnungen aufgeteilt: Vorzeichen \(\sf s\), Exponent \(\sf e\) und Mantisse \(\sf m\). Jedem dieser Bereiche wird eine feste Anzahl von Bits zugeordnet wodruch sich der Wertebereich und Genauigkeit der Darstellung ergibt. Im Allgemeinen kann somit eine Gleitkommazahl dargestellt werden als
Es existieren mehrere Ansätze für die Abbildung von Gleitkommazahlen. Insbesondere im IEEE754 Standard wird folgende Aufteilung definiert: Vorzeichen (1 bit), Exponent (11 bit) und Mantisse (52 bit):
Aus der obigen Festlegung der Bitzuweisung, ergeben sich die Größenordnung für den Wertebereich, welcher durch den Exponenten vorgegeben ist. Um auch Zahlen kleiner 1 darstellen zu können, kann der Exponent \(\sf e\) auch negative Werte annehmen.
Für den Exponenten \(\sf e\) gilt
kleinster Wert in Etwa: -(210 - 1) = -1023
größter Wert in Etwa: ~ 210 - 1 = 1023 .
Ohne Beachtung der Mantisse und des Vorzeichens, ergibt sich mit den obigen Werten dieser Bereich für die Größenordnungen:
kleinste Größenordnung: 2-1023 ~ 10-308
größte Größenordnung: 21023 ~ 10308
Die Genauigkeit, d.h. die kleinste darstellbare Differenz zwischen zwei Gleitkommazahlen, ergibt sich aus der Mantisse \(\sf m\). Eine grobe Abschätzung der Genauigkeit kann wie folgt durchgeführt werden. Per Definition deckt die Mantisse einen Zahlenbereich von 0 bis etwa 10 ab. Dieser Bereich wird in obiger Festlegung mit 52 Bit dargestellt. Hieraus ergibt sich dann der kleinste Unterschied zu
kleinster Unterschied zwischen zwei Gleitkommazahlen: 10 / 252 ~ 2·10-15
Betrachtet man nun Dezimalzahlen, so entspricht das etwa der 15-ten Nachkommastelle.
Der Datentyp, welcher für die Darstellung von Gleitkommazahlen verwendet wird, wird generell als float (engl. floating point number) bezeichnet. Im IEEE754 Standard werden viele verschiedene Darstellungen definiert.
Zeichendarstellung#
Neben Zahlen können auch Zeichen, z.B. für die Darstellung von Text, abgebildet werden. Die Grundidee ist dabei, dass die Zeichen als vorzeichenlose ganze Zahlen gespeichert und dann anhand einer Tabelle interpretiert werden. Ein Beispiel für eine solche Tabelle, welche den Zahlenwerte Zeichen zuordnet, ist die ASCII Tabelle. In dieser werden 7-Bit-Zahlen, d.h. 128 Zeichen, kodiert. In der 1963 erstellten – und bis heute genutzten – Tabelle, sind sowohl nicht-druckbare Zeichen (z.B. Zeilenvorschub, Tabulatorzeichen) als auf folgende druckbare Zeichen enthalten:
!"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
`abcdefghijklmnopqrstuvwxyz{|}~
Wobei das erste Zeichen das Leerzeichen ist.