Zahlen

Dezimalsystem

Das Dezimalsystem ist das heutzutage normalerweise verwendete System. Dem System liegen die zehn Ziffern: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} zugrunde. Wenn diese Ziffern aneinander gereiht werden ergeben sie eine Zahl, die wie folgt gelesen werden muss. Die Zahl ist die Summe aus den Zehnerpotenzen {10n, 10n - 1, ..., 101, 100} mit den Ziffern als koeffizienten. Die Ziffer ganz links ist dabei der Koeffizient der höchsten Zehnerpotenz 10n bei einer n-stelligen Zahl und die Ziffer ganz links diejenige mit die tiefsten Zehnerpotenz 100 = 0.
Der Zahl 5131 wird also die Summe 5 * 103 + 1 * 102 + 3 * 101 + 1 * 100 = 5000 + 100 + 30 + 1 zugeordnet.

Binärsystem

In Computern wird das Binärsystem verwendet, da es dort sinnvoller ist nur zwischen zwei verschiedenen Zuständen unterscheiden zu müssen als zwischen zehn. Das Binärsystem ist auf den zwei Ziffern {0, 1} aufgebaut. Eine Binärzahl besteht also lediglich auch Nullen und Einsen. Die Zahl hat dabei den Wert der Summe aus den Zweierpotenzen {2n, 2n - 1, ... , 21, 20} mit den Ziffern als Koeffizienten. Wie beim Dezimalsystem wird wieder die erste Ziffer mit der höchsten Potenz multipliziert, die zweithöchste mit der zweithöchsten Potenz multipliziert bis zum letzten, der mit der niedrigsten Potenz 20 = 1 multipliziert wird. Die Anzahl stellen wird bei einer Binärzahl mit der Anzahl Bits (Ziffern) bezeichnet.
Die Zahl 10101101010 hat also den Wert 1 * 210 + 0 * 29 + 1 * 28 + 0 * 27 + 1 * 26 + 1 * 25 + 0 * 24 + 1 * 23 + 0 * 22 + 1 * 21 + 0 * 20 = 1024 + 256 + 64 + 32 + 8 + 2 = 1386.

Hexadezimalsystem

Dem Hexadezimalsystem liegen die 16 Ziffern {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} zugrunde. Dabei haben die Buchstaben {A, B, C, D, E, F} die dezimalen Werte {10, 11, 12, 13, 14, 15}. In einer Hexadezimalzahl sind die Ziffern die Koeffizienten von Sechzehnerpotenzen{16n, 16n - 1, ..., 161, 160}, wie wir es auch bereits aus den anderen Zahlensystemen kennen.
Die Zahl 15F hat also den Wert 1 * 162 + 5 * 161 + F * 160 = 1 * 256 + 5 * 16 + 15 * 1 = 256 + 80 + 15 = 251.

Umwandlung Hexadezimal - Binär

Hexadezimalzahlen und Binärzahlen lassen sich besonders gut ineinander umwandeln. Dabei muss erkannt werden, dass jede Ziffer einer Hexadezimalzahl mit vier Binärziffern dargestellt werden kann. Falls es nicht aufgeht muss die Binärzahl noch linksseitig mit Nullenaufgefüllt werden.

Binärzahl (4 Bits) Hexadezimal Erklärung
0000 0 Vier Nullen im Binärsystem bedeuten eine 0 im Hexadezimalsystem.
1100 C Diese Binärzahl 8 + 4 = 12 wird im Hexadezimalsystem als C dargestellt.
1111101 7D Wenn die Zahl aufgefüllt wird, sodass die Anzahl Stellen durch vier teilbar wird erhalten wir 0111'1101. Die ersten vier Bits stellen dann die Zahl 7 dar und die restlichen Bits die 13, die mit D dargestellt wird.
00101011 2B
1110101101 3CD
101'1101'0101'1010'1000'1010'1110 5D5'C8CE Die ' dienen hier lediglich der Übersichtlichkeit.

Umwandlungsaufgaben

Wandle die vorgegeben Zahlen in das jeweilige System um und fülle damit die leeren Felder aus. Schreibe dabei nur so viele Stellen wie benötigt werden.

Dezimal Hexadezimal Binär












Negative Zahlen: Das Zweierkomplement

Bis jetzt wissen wir lediglich wie wir natürliche Zahlen darstellen können. Um den darstellbaren Bereich auf die ganzen Zahlen zu erweitern brauchen wir aber auch noch die negativen Zahlen. Diese werden mit dem Zweierkomplement dargestellt. Dabei wird mindestens ein Bit mehr benötig, als in den natürlichen Zahlen benötigt werden würde um die Zahlen bis zu einer gewissen Zahl darstellen zu können (beispielsweise werden für die Zahlen von 0 bis 256 sieben Bits benötigt, hingegen von -255 bis 256 acht Bits). Das Zweierkomplement wird in zwei Schritten gebildet: Falls die Zahl negativ ist muss als erstes 1 subtrahiert werden. Als zweites werden alle Bits umgedreht(aus jeder 0 wird eine 1 und aus jeder 1 eine 0).

Dezimalzahl Betrag Binärzahl Betrag Binärzahl - 1 (10 Bit) Binärzahl (10 Bit)
-25 11001 0000011000 1111100111
-19 10011 0000010010 1111101101
12 1100 0000001100 0000001100
-40 101000 0000100111 1111011000

Wie in der Tabelle zu erkennen ist wird mit einer positiven Zahl nichts gemacht. Dadurch können negative Zahlen daran erkannt werden, dass das erste Bit eine 1 ist. Um eine negative Binärzahl zu lesen kann das Zweierkomplement einfach erneut gebildet. Also zuerst 1 addieren und danach invertieren ergibt den Betrag der Zahl.

Aufgaben

Wandle die folgenden Zahlen in die verschiedenen Systeme um. Gib für die Dezimalzahlen und die Beträge binär so viele Stellen wie nötig an und die Binärzahlen auf 15 Stellen an.

Dezimal Betrag binär Binär












Reelle Zahlen: Fliesskomma

Reelle Zahlen werden völlig anders realisiert als Integer. Dafür wird die sogenannte Fliesskommazahl verwendet. Hier werden die Fliesskommazahlen im Format IEEE754 mit 32 Bits betrachtet.
Eine Fliesskommazahl besteht aus drei Teilen: Dem Vorzeichen (s für sign), dem Exponenten (e für exponent) und der Mantisse (m für mantissa). Von den 32 zur verfügung stehenden Bits werden eins für das Vorzeichen, acht für den Exponenten und 23 für die Mantisse verwendet.

Das Vorzeichen

Das erste Bit einer Fliesskommazahl ist das Vorzeichen. Ist es eine 0 so ist die Zahl positiv, ist es eine 1 so ist die Zahl negativ.

Der Exponent

Die Bits zwei bis neun stellen den Exponenten dar. Eine Fliesskommazahl muss immer zuerst in die Form s * 2e-B * 1.m gebracht werden. Dabei stellt B den sogenannten Exponent-Bias dar. Dieser wird gebraucht, sodass negative Exponenten dargestellt werden können ohne dass negative Zahlen codiert werden müssen. In unserem Format beträgt der Exponenten-Bias B = 127. Der zweite Teil 1.m zeigt uns an, dass die Zahl zwischen 1 und 2 liegen muss. Wir müssen sie also so lange mit zwei multiplizieren, respektive dividieren, bis sie im Intervall [1, 2] liegt. 127 + die Anzahl Multiplikationen, respektive minus die Anzahl Divisionen gibt dann den Exponenten an, der mit 8 Bits als natürliche Zahl kodiert wird.

Die Mantisse

Die Mantisse gibt die Nachkommastellen der Zahl s * 2e-B * 1.m an. Das 1.m bedeutet dabei, dass die Mantisse lediglich die Nachkommastellen nach der 1, also eine Zahl im Intervall [0, 1] darstellt. Sie besteht aus 23 Bits, die jeweils die Koeffizienten der Potenzen {2-1, 2-2, ..., 2-23} darstellen. 1001 in der Mantisse würde also 1 * 0.5 + 0 * 0.25 + 0 * 0.125 + 1 * 0.0675 = 0.5675 lauten. Zu dieser Zahl wird nun noch eine 1 addiert und sie wird mit dem Vorzeichen und der Zweierpotenz 2e-B multipliziert.

Ein Beispiel

In diesem Beispiel wird die Zahl -18.18525 als Fliesskommazahl dargestellt.

Operation Auswirkung Erklärung
-18.18525 = -1 * 18.18525 s = 1 Die Zahl ist negativ also beträgt das Vorzeichen 1
18.18525 = 1.17828125 * 24 e = 127 + 4 = 13110 = 100000112 Der Exponent ergibt sich aus dem Exponenten, den 2 erhält um unsere Zahl multipliziert mit einer Zahl in [1, 2] darzustellen addiert zu den Exponent-Bias = 127.
1.17828125 - 1= 0.17828125 ≅ 0 * 2-1 + 0 * 2-2 + 1 * 2-3 + 0 * 2-4 + 1 * 2-5 m = 00101 Die Mantisse setzt sich aus den Koeffizienten der Zweierpotenzen zusammen.

Denormalisierte Zahlen

Dank der oben aufgeführten Darstellung von reellen Zahlen werden betragsmässig kleine Zahlen genauer dargestellt als betragsmässig grosse Zahlen (auf mehr Nachkommastellen genau, deswegen auch Fliesskomma). Das Problem ist jedoch, dass keine Zahlen mit Betrag unter 2-126 dargestellt werden können. Deswegen werden die denormalisierten Zahlen definiert: Wenn der Exponent 25510 = 1111'11112 beträgt bedeutet dies NaN (not a nunber, z.B. unendlich) und die Mantissenbits können weitere Informationen enthalten. Wenn der Exponent 010 = 0000'00002 beträgt dann wird die Zahl nicht mehr als s * 2e-B * 1.m, sondern als s * 2e-B * 0.m interpretiert. Wenn die Mantisse nun nur aus Nullen besteht wird die Zahl 0 dargestellt.

Aufgaben zu den Fliesskommazahlen

Fülle die leeren Felder aus. Gib für den Exponenten jeweils 8 Bits und für die Mantisse die ersten 15 Bits an.

Dezimalzahl Vorzeichen Exponentbits Mantisse