63

Kapitel 6 Darstellung von Daten im Rechner Kapitel 6: Darstellung von Daten im Rechner Seite 1 / 63 Darstellung von Daten im Rechner Inhaltsverzei...
49 downloads 4 Views 228KB Size
Kapitel 6 Darstellung von Daten im Rechner

Kapitel 6: Darstellung von Daten im Rechner

Seite 1 / 63

Darstellung von Daten im Rechner Inhaltsverzeichnis 6.1 Darstellung ganzer Zahlen 6.2 Darstellung reeller Zahlen 6.3 Rechnerarithmetik 6.4 Darstellung alphanumerischer Daten

Kapitel 6: Darstellung von Daten im Rechner

Seite 2 / 63

Darstellung ganzer Zahlen

Die Wortlänge eines Rechners stellt eine obere Grenze für die Größe von Zahlen dar, die der Rechner verarbeiten kann. Mit 8 Bits lassen sich z.B. natürliche Zahlen zwischen 0 und 28-1 = 255 darstellen. Probleme: ƒ ƒ ƒ

Diese Bereiche können überschritten werden, etwa durch Addition (132+133). Eine Lösung wäre das Setzen eines Flags, dass der Bereich überschritten wurde. Was passiert bei der Subtraktion, etwa bei (132-133)? Wie werden negative Zahlen dargestellt?

Kapitel 6: Darstellung von Daten im Rechner

Seite 3 / 63

Vorzeichen/Betrags-Darstellung Eine Möglichkeit der Darstellung negativer Zahlen ist die so genannte Vorzeichen/Betrags-Darstellung: ƒ

Man verwendet das erste Bit zur Darstellung des Vorzeichens: • 0 für eine positive, • 1 für eine negative Zahl.

ƒ

Mit den verbleibenden Bits wird der Betrag der Zahl dargestellt.

Beispiel 6.1: Die Zahl -19 wird mit 8 Bits also dargestellt als: 1 0010011 ƒ

19

Mit n Bits werden also nicht mehr die Zahlen von 0 bis 2n-1 dargestellt, sondern im Bereich von -2n-1+1 bis 2n-1-1.

Kapitel 6: Darstellung von Daten im Rechner

Seite 4 / 63

Nachteile der Vorzeichen/Betrag-Darstellung Diese Art der Darstellung ist zwar intuitiv, besitzt aber einige Nachteile: ƒ ƒ ƒ ƒ

Es gibt zwei verschiedene Nullen: +0 (00...00) und -0 (10...00). Ein Rechner, der Zahlen bitweise vergleicht, wird diese nicht als gleich ansehen. Das Rechnen mit dieser Zahlendarstellung ist schwierig, da sie sowohl ein Addierals auch ein Subtrahierwerk benötigt. Zusätzlich muss es eine Logik geben, die entscheidet, ob addiert oder subtrahiert werden muss. Es müssen vier Fälle unterschieden werden: Fall

Operanden

Auszuführende Operation

1

+x

+y

x+y

Addition

2

-x

-y

-(x+y)

Addition

3

+x

-y

mit |x| • |y|

x-y

Subtraktion

-x

+y

mit |y| • |x|

y-x

Subtraktion

+x

-y

mit |x| < |y|

-(y-x)

Subtraktion

-x

+y

mit |y| < |x|

-(x-y)

Subtraktion

4

Kapitel 6: Darstellung von Daten im Rechner

Seite 5 / 63

Komplementdarstellung ganzer Zahlen Führt man die Subtraktion auf die Addition zurück, braucht man kein Subtrahierwerk, sondern kann mit einem reinen Addierwerk auskommen. Dazu müssen die negativen Zahlen allerdings anders dargestellt werden, etwa durch die Komplement-Darstellung: Definition 6.1: Sei x = (xn-1,…, x0)2 ∈ Bn eine n-stellige Dualzahl. K1(x) := (1 ⊕ xn-1,…, 1 ⊕ x0)2

heißt Einer-Komplement von x.

K2(x) := (1 ⊕ xn-1,…, 1 ⊕ x0)2 +1 = K1(x) + 1 (modulo 2n) heißt Zweier-Komplement von x. Das Einer-Komplement einer Zahl x erhält man also durch bitweises Invertieren von x, das Zweier-Komplement durch zusätzliche Addition von 1 (modulo 2n). Kapitel 6: Darstellung von Daten im Rechner

Seite 6 / 63

Komplementdarstellung - Beispiel

Beispiel 6.2: Sei x = (10011110)2. Dann gilt: K1(x)

=

01100001

K2(x)

=

01100010

Wesentlich bei der Komplement-Darstellung ist, dass sie stets auf eine vorgegebene Stellenzahl bezogen wird.

Kapitel 6: Darstellung von Daten im Rechner

Seite 7 / 63

Komplementdarstellung negativer Zahlen Kann ein Rechner n Bits in einem Register oder einer Speicherzelle ablegen, so sind N=2n verschiedene Bitmuster darstellbar. Da eine Komplementdarstellung speziell zur Darstellung negativer Zahlen verwendet wird, kann man generell von der folgenden Idee ausgehen: ƒ ƒ

Eine positive Zahl x wird dargestellt durch Eine negative Zahl -x wird dargestellt durch

+x = x -x = N-1-x (in K1), -x = N-x (in K2).

Beispiel 6.3: Sie n=4. Dann gilt: N = 24 = 16. Dann stimmt die Darstellung von -5 im Zweier-Komplement nach obiger Vereinbarung mit der von 16-5 = 11 überein: (5)10 = (0101)2 K2(5) = K1(5)+1 = (1010)2+1 = (1011)2 = (11)10

Kapitel 6: Darstellung von Daten im Rechner

Seite 8 / 63

Komplementdarstellungen Einer-Komplement: Umfasst den Wertebereich von -2n-1+1 bis 2n-1-1. Nachteil: es gibt zwei Darstellungen der Null.

Kapitel 6: Darstellung von Daten im Rechner

Zweier-Komplement: Umfasst den Wertebereich von -2n-1 bis 2n-1-1. Vorteil: es gibt nur eine Darstellung der Null.

Seite 9 / 63

Mehrdeutigkeit der Komplementdarstellungen Der Nachteil beider Komplementdarstellungen ist die Mehrdeutigkeit: (111)2 in K2 kann (-1)10 bedeuten, aber auch (+7)10. Lösung: Wie bei der Vorzeichen/Betrag-Darstellung gibt die erste Ziffer an, ob es sich um eine positive oder eine negative Zahl handelt. ƒ ƒ

Positiv: führende Null Negativ: führende Eins

(111)2 wird dann also als (-1)10 interpretiert, (0111)2 als (+7)10. D.h. es ist zu beachten, dass in einem Rechner stets eine bestimmte Wortlänge fest liegt, auf die sich das Komplement bezieht.

Kapitel 6: Darstellung von Daten im Rechner

Seite 10 / 63

Rechnen mit dem Einer-Komplement Beispiel 6.4: (Subtraktion im Einer-Komplement) Zur Subtraktion a-b addiert man das Komplement von b zu a (a+K1(b)). a=(00110100)2=(52)10, b=(01000110)2 =(70)10 bei n=8 Bits. Addition a b a+b

+

Subtraktion

0

0

1

1

0

1

0

0

a

0

1

0

0

0

1

1

0

K1(b)

0

1

1

1

1

0

1

0

a-b

a+b=(122)10

Kapitel 6: Darstellung von Daten im Rechner

+

0

0

1

1

0

1

0

0

1

0

1

1

1

0

0

1

1

1

1

0

1

1

0

1

a-b = (237)10 = (256 - 1 - 237)10 = (-18)10

Seite 11 / 63

Rechnen mit dem Einer-Komplement Beispiel 6.4: (Subtraktion im Einer-Komplement) Tritt bei der Subtraktion ein Übertrag auf, wird dieser zum Ergebnis addiert: a = (00110100) = (52)10 , b = (00011001) = (25)10. a

0

0

1

1

0

1

0

0

K1(b)

+

1

1

1

0

0

1

1

0

a-b

1

0

0

0

1

1

0

1

0

Addition des Übertrags zur niedrigsten Stelle des Ergebnisses: 0

0

0

1

1

0

1

+ a-b

0 1

0

0

0

1

1

0

1

1

a-b=(27)10 Kapitel 6: Darstellung von Daten im Rechner

Seite 12 / 63

Rechnen mit dem Zweier-Komplement Beispiel 6.5: (Subtraktion im Zweier-Komplement) Zur Subtraktion a-b addiert man das Komplement von b zu a (a+K2(b)). a=(00110100)2=(52)10, b=(01000110)2 =(70)10 bei n=8 Bits. Addition a b a+b

+

Subtraktion

0

0

1

1

0

1

0

0

a

0

1

0

0

0

1

1

0

K2(b)

0

1

1

1

1

0

1

0

a-b

a+b=(122)10

Kapitel 6: Darstellung von Daten im Rechner

+

0

0

1

1

0

1

0

0

1

0

1

1

1

0

1

0

1

1

1

0

1

1

1

0

a-b = (238)10 = (256 - 238)10 = (-18)10

Seite 13 / 63

Rechnen mit dem Zweier-Komplement Beispiel 6.5: (Subtraktion im Zweier-Komplement) Tritt bei der Subtraktion ein Übertrag auf, wird dieser ignoriert: a = (00110100) = (52)10 , b = (00011001) = (25)10. a

0

0

1

1

0

1

0

0

K2(b)

+

1

1

1

0

0

1

1

1

a-b

1

0

0

0

1

1

0

1

1

0

0

0

1

1

0

1

1

Ignorieren des Übertrags liefert: a-b

=

a-b=(27)10 Kapitel 6: Darstellung von Daten im Rechner

Seite 14 / 63

Rechnen mit den Komplementen

Bei Auftreten eines Übertrags bei einer Subtraktion wird dieser bei K1 zu der letzten Stelle hinzuaddiert, bei K2 ignoriert. Der Übertrag bedeutet, dass der Zahlenkreis (vgl. S. 9) einmal umrundet wurde. ƒ ƒ

Bei K1 bedeutet dies, dass die Null doppelt subtrahiert wurde, eine davon muss rückgängig gemacht werden, daher die Addition des Übertrags. Bei K2 hat dies keine Konsequenzen, da es nur eine Null gibt. Das Ignorieren des Übertrages entspricht der Subtraktion von N.

Kapitel 6: Darstellung von Daten im Rechner

Seite 15 / 63

Subtraktion mit einem Addierwerk

Durch die Komplement-Darstellungen ist die Verwendung eines Subtrahierwerkes unnötig. Durch das bitweise Invertieren (und eventueller Addition von 1) kann ein normales Addierwerk diese Aufgabe übernehmen. Ist das Ergebnis des Addierwerkes negativ, dann wird es wie folgt decodiert: ƒ ƒ

Beim Einer-Komplement ist die Zahl einfach erneut zu komplementieren. Beim Zweier-Komplement ist die Zahl zu komplementieren und eine Eins zu addieren.

Ist das Ergebnis des Addierwerkes positiv, ist keine Umwandlung notwendig.

Kapitel 6: Darstellung von Daten im Rechner

Seite 16 / 63

Decodierung der Komplementdarstellungen Beispiel 6.7: Decodierung von Ergebnissen: Einer-Komplement:

Zweierkomplement:

(1111 1011)2 ist eine negative Zahl. Sie wird komplementiert zu (0000 0100)2. (1111 1011)2 stellt also im EinerKomplement die Zahl (-4)10 dar.

(1110 1011)2 ist eine negative Zahl. Sie wird komplementiert zu (0001 0100)2. Addition von 1 führt zu (0001 0101)2. (1110 1011)2 stellt also im ZweierKomplement die Zahl (-21)10 dar.

(0010 0101)2 ist eine positive Zahl. Sie muss nicht umgewandelt werden und stellt offensichtlich (+37)10 dar.

(0110 0001)2 ist eine positive Zahl und muss nicht umgewandelt werden. Sie stellt offensichtlich (+97)10 dar.

Kapitel 6: Darstellung von Daten im Rechner

Seite 17 / 63

Vergleich der Darstellungen Alternative Darstellungen ganzer Zahlen:

Kapitel 6: Darstellung von Daten im Rechner

Seite 18 / 63

Overflow Bei einer Addition kann ein Overflow auftreten: Entsteht bei der Addition zweier positiver Zahlen ein (scheinbar) negatives Ergebnis bzw. bei der Subtraktion ein (scheinbar) positives, so liegt eine Bereichsüberschreitung vor. Beispiel 6.8: Mit n=4 Bits sind im Zweier-Komplement die Zahlen von -8 bis +7 darstellbar. Addiert man nun die Zahlen 5 und 4, so erhält man folgendes Resultat: 0 1 0 1 + 0 1 0 0 1 0 0 1

Das Ergebnis lautet -7 und nicht +9, da +9 nicht darstellbar ist. Abhilfe schafft ein Overflow-Flag, das angibt, ob ein Overflow aufgetreten ist. Kapitel 6: Darstellung von Daten im Rechner

Seite 19 / 63

Binary Coded Decimal (BCD) Eine vierte Möglichkeit, Dezimalzahlen darzustellen, ist der BCD-Code: ƒ ƒ ƒ

Die Dezimalziffern 0 bis 9 werden wie gewohnt durch eine Bitfolge codiert. Die Bitfolge hat die konstante Länge 4. Es bleiben sechs Bitmuster ungenutzt, zwei davon werden zur Kennzeichnung positiver (1010) und negativer (1011) Zahlen verwendet.

Beispiel 6.9: Die BCD-Darstellung der Zahl 4397 lautet (ohne Vorzeichen): 0100 0011 1001 0111. Entsprechend lauten die Darstellungen von +4397 und -4397: 1010 0100 0011 1001 0111 (+4397), 1011 0100 0011 1001 0111 (-4397). Die BCD-Codierung ist mittlerweile veraltet. Kapitel 6: Darstellung von Daten im Rechner

Seite 20 / 63

Binary Coded Decimal (BCD) Auch wenn die BCD-Darstellung einer Zahl leicht herzustellen und abzulesen ist, so ist das Rechnen mit dieser Darstellung kompliziert: Beispiel 6.10: Rechnen mit der BCD-Codierung Wir berechnen 9 + 1:

Addition von 6:

9

0 0 0 0

1 0 0 1

0 0 0 0

1 0 1 0

+ 1

+ 0 0 0 0

0 0 0 1

+ 0 0 0 0

0 1 1 0

1 0

0 0 0 0

1 0 1 0

0 0 0 1

0 0 0 0

1 0 1010 ist keine Zahl, sondern das Zeichen für +. Da sechs Bitmuster nicht genutzt Jetzt haben wir das richtige Ergebnis. werden, muss eine 6 addiert werden:

Bereits die Addition von zwei BCD-Zahlen kann eine Dezimalanpassung erfordern. Kapitel 6: Darstellung von Daten im Rechner

Seite 21 / 63

Darstellung von reellen Zahlen

Bei den bisherigen Zahlendarstellungen sind wir immer von ganzen Zahlen ausgegangen. Mit jedem Rechner lassen sich darüber hinaus auch nicht-ganzzahlige Dualbzw. Dezimalbrüche verarbeiten.

Das geschieht durch Verwendung spezieller Darstellungen: ƒ ƒ

Die Festkommadarstellung belässt das Komma für alle Zahlen an einer fest vorgegebenen Stelle, die Gleitkommadarstellung verschiebt das Komma so, dass signifikante Stellen erhalten bleiben. Das Komma befindet sich nicht bei allen Zahlen an der gleichen Stelle.

Kapitel 6: Darstellung von Daten im Rechner

Seite 22 / 63

Festkommadarstellung Wird eine Zahl durch eine n-stellige Dual- (bzw. Dezimal-) Zahl (eventuell komplementiert) dargestellt, wobei das Komma an beliebiger, aber fester Stelle angenommen wird, so spricht man von einer Festkomma-Darstellung. Beispiel 6.11: (a) Das Komma wird rechts von der Stelle mit dem niedrigsten Wert angenommen. n−1 Ein n-bit-Wort (xn-1,… , x0 )2 stellt dann die Zahl z =

i x ⋅ 2 ∑ i dar. i =0

(b) Das Komma wird links von der Stelle mit dem höchsten Wert angenommen. n−1 Ein n-bit-Wort (xn-1,… , x0 )2 stellt dann die Zahl z =

Ist z.B. n=4, so ist 1001 die Darstellung von

i −n x ⋅ 2 ∑ i dar. i =0

1⋅ 2-1 + 0 ⋅ 2-2 + 0 ⋅ 2-3 +1 ⋅ 2-4 = 0,5625. Kapitel 6: Darstellung von Daten im Rechner

Seite 23 / 63

Festkommadarstellung Im Allgemeinen stellt die Bitfolge (xn-1,…, x1, x0, x-1,…, x-m+1,x-m)2, die Zahl

x=

n −1



i =− m

xi