2.1 Analoge und digitale Darstellung von Werten 79 2 Darstellung von Zahlen und Zeichen Computer- bzw. Prozessorsysteme führen Transformationen durch, die Eingaben X auf Ausgaben Y abbilden, d.h. Y = f (X ). Beispiele: • Berechnungen: Y aus X berechnen; z.B. X = zwei Vektoren, Y = Skalarprodukt • Dokument drucken: X = Dokument; Y = Befehle/Daten, die den Drucker dazu bringen, ein Dokument zu drucken • Rastern von Grafiken: X = Repräsentation eines Objekts; Y = Farbintensitätswerte von Pixeln Die Art und Weise, wie diese Transformationen durchgeführt werden, ist durch die Programme festgelegt, die vom Prozessor ausgeführt werden: Eingabe X Programm Ausgabe Y Prozessor X und Y sind Datenstrukturen (Skalare, Vektoren, Matrizen oder sonstige Zusammenfassungen), d.h. Ansammlungen von Daten. Als Datentypen werden ‘‘Zahlen’’ oder ‘‘Zeichen’’ verwendet. 2.1 Analoge und digitale Darstellung von Werten Digitale Darstellung ) Verwendung von Binärzahlen 2.1 Analoge und digitale Darstellung von Werten 79 2 Darstellung von Zahlen und Zeichen Computer- bzw. Prozessorsysteme führen Transformationen durch, die Eingaben X auf Ausgaben Y abbilden, d.h. Y = f (X ). Beispiele: • Berechnungen: Y aus X berechnen; z.B. X = zwei Vektoren, Y = Skalarprodukt • Dokument drucken: X = Dokument; Y = Befehle/Daten, die den Drucker dazu bringen, ein Dokument zu drucken • Rastern von Grafiken: X = Repräsentation eines Objekts; Y = Farbintensitätswerte von Pixeln Die Art und Weise, wie diese Transformationen durchgeführt werden, ist durch die Programme festgelegt, die vom Prozessor ausgeführt werden: Eingabe X Programm Ausgabe Y Prozessor X und Y sind Datenstrukturen (Skalare, Vektoren, Matrizen oder sonstige Zusammenfassungen), d.h. Ansammlungen von Daten. Als Datentypen werden ‘‘Zahlen’’ oder ‘‘Zeichen’’ verwendet. 2.1 Analoge und digitale Darstellung von Werten Digitale Darstellung ) Verwendung von Binärzahlen 80 2 Darstellung von Zahlen und Zeichen 2.2 Festkommazahlen Festkommazahlen sind Zahlen, bei denen das Komma an einer zuvor festgelegten/vereinbarten Stelle steht. Vorzeichenlose Festkommazahlen Vorzeichenlose Festkommazahlen haben kein Vorzeichen, d.h. sie sind stets positiv. Der Wert v (v = value) einer vorzeichenlosen Festkommazahl ergibt sich zu: v = (an 1 · bn 1 5+77 O + · · · + a1 · b 1 + a0 · b 0 ) · b i • n ist die Stellenzahl, d.h. die maximale Menge an Ziffern, mit denen die Zahl dargestellt werden kann. • b ist die Basis des Zahlensystems, z.B. 10 für das Dezimalsystem (Ziffern 0 ... 9) oder 2 für Binärzahlen. Ziffern an der Stelle j haben die Wertigkeit b j . • Die Koffizienten aj sind die Ziffern an den Stellen j. Die Werte der Ziffern liegen im Bereich 0...(b 1) und geben an, wie oft die Wertigkeit der jeweiligen Stelle zum Wert der Zahl beiträgt. • Der Wert von i legt die Position des Kommas fest: • i = 0: Dieser Fall ist der Normalfall: Durch Multiplikation mit b i = b 0 = 1 bleibt v = an 1 · b n 1 + · · · + a1 · b 1 + a0 · b 0 . Das Komma steht hinter der Einer-Stelle und wird weggelassen. Es werden ganze Zahlen mit den Werten 0, 1, ... , b n 1 dargestellt. • i > 0: Durch Multiplikation mit b i können größere Zahlen dargestellt werden, jedoch auf Kosten geringerer Genauigkeit. Die Ziffern der Zahl werden um i Stellen nach links geschoben, die frei werdenden Positionen werden mit Nullen aufgefüllt. Das Komma wird weggelassen. Darstellungsbeispiel einer Festkommazahl für n = 8 und i = 3: xxxxxxxx000. Die Zeichen ‘‘x’’ stehen dabei jeweils für eine der Ziffern an 1 ... a0 . • i < 0: Da i < 0, entspricht die Multiplikation mit b i einer Division durch b |i| , d.h. das (nach der Einer-Stelle implizit stehende) Komma wird um i Stellen nach links geschoben. Die Genauigkeit erhöht sich auf Kosten der größtmöglich darstellbaren Zahl. Darstellungsbeispiel für n = 8 und i = 3: xxxxx,xxx. Im folgenden werden nur noch Dezimalzahlen (b = 10) und Binärzahlen (b = 2) betrachtet. 2.2 Festkommazahlen 81 Nachfolgender Zahlenring zeigt die Zuordnung von Binär- zu Dezimalzahlen für diese Kodierung: 1111 1111 0000 1110 0001 15 1101 0 14 1 13 1100 0010 2 12 3 11 4 0011 Richtung steigender Werte a%ty§ao¥#÷% 1011 10 5 9 1010 0100 6 8 0101 7 1001 0110 1000 0111 Die Darstellung zeigt: - • Bei Binärwerten tritt ein Überlauf auf, wenn sich der Wert des höherwertigsten Bits, auch ‘‘MSB’’ (most significant bit) genannt, ändert • Die Richtung steigender Werte ist bei beiden Kodierungen gleich; Beispiel: • 210 + 110 = 310 • 00102 + 00012 = 00112 82 2 Darstellung von Zahlen und Zeichen Aufgaben Die folgenden Aufgaben betrachten Binärzahlen, d.h. b = 2. a) Welches ist die kleinste darstellbare vorzeichenlose Festkommazahl? : b) Wieviele unterschiedliche vorzeichenlose Festkommazahlen können mit n Bit dargestellt werden? c) i Geben Sie für i = 0 den Wert der größten vorzeichenlosen Festkommazahl in Abhängigkeit von n an. : d) Geben Sie für n = 8 und i = 2 den Wert der größten vorzeichenlosen Festkommazahl an. ( zn e) . n ) zi . = Bit zhti zi . = 28+2-22=1024 4=1020 - Betrachten Sie den Zahlenring. Wie kann man einen Überlauf von vorzeichenlosen Zahlen feststellen? : Carry f) 00 xxxxxx out an :: Stelle MSBU hat Well den Sind alle Abstände vorzeichenloser Binärzahlen zum nächst kleineren und nächst größeren Nachbarn gleich weit entfernt? Skizzieren Sie für i = 2 und n = 3 die entsprechenden Werte auf dem Zahlenstrahl. 0 0,25 0,5 On 5 1 10 1,25^5 1 A . 2.2 Festkommazahlen 83 Im Folgenden gilt i = 0. g) Wandeln Sie für n = 8 folgende Dezimalzahlen in vorzeichenlose Binärzahlen um. Dezimal Binär vorzeichenlos 00000000 0 75 127 0100101^01^111^1 128 10000000 255 1^1^1111 256 1100000€ ibelanf h) -→gehsuiht Berechnen Sie 24 + 17 =x3 im Binärsystem, n = 8. 00011000 ÷ +0001000¥ i) ¥4,375 Berechnen Sie 37 + 53 in vorzeicher Binärkodierung, n = 8. 16 ,i= 0^0010 +1000¥ oj mm625 -3 84 T 2 Darstellung von Zahlen und Zeichen j) Berechnen Sie 17 + 23 in vorzeichenloser Binärkodierung, n = 8. k) Wandeln Sie für n = 6 und i = 3 folgende Dezimalzahlen in vorzeichenlose Binärzahlen um. -3 Dezimal 0 : Binär vorzeichenlos % 00001 0,125 T l) 1,75 001 NO 3,375 Orn Orr 5 101000 Geben Sie für n = 6 und i = 3 den Wert der größten vorzeichenlosen Festkommazahl an. 2.2 Festkommazahlen T 85 m) Wandeln Sie für n = 8 und i = 0 folgende Dezimalzahlen in vorzeichenlose Binärzahlen um. Dezimal Binär vorzeichenlos 0 5 67 126 253 . T n) Wandeln Sie für n = 6 und i = 3 folgende Dezimalzahlen in vorzeichenlose Binärzahlen um. Dezimal 0 0,375 7,25 10 12,5 17,625 Binär vorzeichenlos 86 2 Darstellung von Zahlen und Zeichen Vorzeichenbehaftete Festkommazahlen Es gibt verschiedene Möglichkeiten, binäre vorzeichenbehaftete Festkommazahlen darzustellen: • Vorzeichen und Betrag • Einer-Komplement • Zweier-Komplement Vorzeichen und Betrag Bei dieser Darstellung werden Vorzeichen und Betrag der Zahl separat abgespeichert: • Das Vorzeichen wird repräsentiert durch das höherwertigste Bit: Hat das Bit den Wert 0, ist die Zahl positiv, hat das Bit den Wert 1, ist die Zahl negativ. • Der Betrag der Zahl wird durch die restlichen Bits dargestellt. Ob eine Zahl positiv oder negativ ist, kann direkt am MSB abgelesen werden. Zur Negation einer Zahl muss nur das höherwertigste Bit geändert werden. Ein Problem bei dieser Darstellung ist die doppelte Null: • 00 ... 0002 ) +0 • 10 ... 0002 ) 0 Nachfolgende Abbildung zeigt für n = 4 die Zuodnung von Binär- zu Dezimalzahlen. • Für positive Zahlen ist die Richtung steigender Werte für Binär- und Dezimalzahlen die selbe. • Für negative Zahlen ist die Richtung jedoch unterschiedlich; Beispiel: • 10102 + 00012 = 10112 : Bewegung im Uhrzeigersinn • 210 + 110 = 110 : Bewegung gegen den Uhrzeigersinn • Ergebnis falsch: 110 6= 10112 2.2 Festkommazahlen 87 1111 0000 1110 0001 0 -7 1101 -6 1 -5 1100 0010 2 -4 3 negativ positiv -3 1011 4 -2 1010 0011 0100 5 -1 -0 6 7 1001 0101 0110 1000 0111 Aufgaben a) Welche Auswirkungen hat es, dass für negative Zahlen die Richtung steigender Werte nicht übereinstimmt? Voaeidun / Beki vorzcidren Zahm in mill homers bearbeikt Darstellmg n unit seller Werder Hardware lose wie Zahler b) Ist der Wertebereich symmetrisch? Begründung! . Jon , da Betray pos . . key idenksch 88 c) 2 Darstellung von Zahlen und Zeichen Geben Sie den Wertebereich für i = 0 in Abhängigkeit von n an. thr - - , -: 0,0 . . . 2h " d) Kodieren Sie für n = 8 und i = 0 die folgenden Zahlen binär in der Darstellung ‘‘Vorzeichen und Betrag’’. Dezimal Binär Vorzeichen/Betrag 1010 -10 0 00 20 e) 00000000 On 0:01 Kodieren Sie für n = 6 und i = ‘‘Vorzeichen und Betrag’’. Dezimal 2 die folgenden Zahlen in der Darstellung Binär Vorzeichen/Betrag 001 -2,25 0 010110 0000 00 5,5 T f) Kodieren Sie für n = 8 und i = 0 die folgenden Zahlen binär in der Darstellung ‘‘Vorzeichen und Betrag’’. Dezimal -17 -5 17 Binär Vorzeichen/Betrag 2.2 Festkommazahlen T 89 g) Kodieren Sie für n = 6 und i = ‘‘Vorzeichen und Betrag’’. Dezimal -3,75 -0,5 7,25 2 die folgenden Zahlen in der Darstellung Binär Vorzeichen/Betrag 90 2 Darstellung von Zahlen und Zeichen Einer-Komplement Bei dieser Darstellung werden zur Negierung einer Zahl alle Bits invertiert. Um eine eindeutige Unterscheidung zwischen positiven und negativen Zahlen zu gewährleisten, ist der Betrag der Zahlen auf 2n 1 1 beschränkt. Dadurch kann das Vorzeichen der Zahl wieder direkt am MSB abgelesen werden (0 ) positiv; 1 ) negativ). Der Vorteil dieser Darstellung im Vergleich der Darstellung ‘‘Vorzeichen und Betrag’’ liegt darin, dass die Kodierung der negativen Zahlen in derselben Richtung erfolgt wie die Kodierung der positiven Zahlen, so dass positive und negative Zahlen auf die gleiche Art und Weise addiert (bzw. subtrahiert) werden können. 1111 0000 1110 . 0001 -0 1101 0 -1 1 -2 1100 2 -3 3 negativ 1011 0010 positiv -4 4 -5 1010 0011 0100 5 -6 -7 7 1001 6 0101 0110 1000 0111 2.2 Festkommazahlen 91 Aufgaben a) Geben Sie den Wertebereich der Einer-Komplement-Darstellung für i = 0 in Abhängigkeit von n an. - thin -0 . . . , -10,2 " " -1 b) Ist der Wertebereich asymmetrisch? c) nei Kodieren Sie für n = 8 und i = 0 die folgenden Zahlen binär im Einer-Komplement. Dezimal 6010110 - -10 iuvetiekn 0 20 d) Kodieren Sie für n = 6 und i = 001001 ↳ invetieren Binär Einer-Kompl. 11^10101 00000000 000^0^00 2 die folgenden Zahlen im Einer-Komplement. Dezimal Binär Einer-Kompl. -2,25 110110 0 000000 5,5 010110 T 92 2 Darstellung von Zahlen und Zeichen e) Kodieren Sie für n = 8 und i = 0 die folgenden Zahlen binär im Einer-Komplement. Dezimal Binär Einer-Kompl. -17 -5 17 T f) Kodieren Sie für n = 6 und i = 2 die folgenden Zahlen binär im Einer-Komplement. Dezimal Binär Einer-Kompl. -3,75 -0,5 7,25 g) Zeigen Sie an einem Beispiel, wie sich bei dieser Kodierung zur Addition von Binärzahlen derselbe Algorithmus verwendet lässt wie zur Addition von Dezimalzahlen – sowohl bei positiven als auch bei negativen Werten. pos vey h) : 2^0+3^0 : = 00102+00112=0^01 5no⇐7 -6^0+2^0=-4 ⇐ > 10012+00102=10112 Wann gibt es bei Verwendung der Einer-Komplement-Kodierung Probleme bei der Addition? Doppelte - Null : 2^0+3^0=1^0 ¥7 M 012+00112=00002 2.2 Festkommazahlen i) 93 Wie könnte man das Problem lösen? Ander Mm hodieruuy z⇐> - 1^0 -2^0 M^0zc÷ . 10002¥ -8^0 94 2 Darstellung von Zahlen und Zeichen Zweier-Komplement Beim Zweier-Komplement wird zunächst das Einer-Komplement gebildet und dann noch binär der Wert 1 addiert. Auf diese Weise wird die doppelte Null vermieden. Der Wertebereich wird asymmetrisch, was jedoch kein Problem darstellt. Berechnungen können in dieser Kodierung mit demselben Algorithmus durchgeführt werden wie im Dezimalsystem. Aus diesem Grund werden vorzeichenbehaftete Festkomma-Zahlen in der Regel im Zweier-Komplement kodiert. a- 1110 -4 negativ 1011 0001 0 -2 -3 1100 0000 : -1 1101 -5 -6 1010 -7 1001 . ltberlanfvorzeichenlos = = 1111 . -8 1000 1 0010 2 3 0011 positiv 4 0100 5 7 6 0101 0110 0111 belanf Ze - Kodieren Sie für n = 8 und i = 0 die folgenden Zahlen binär im Zweier-Komplement. a) Dezimal 1010 ifiueehfunmonon + 00000001 Xi -10 0 20 . Binär Vorzeichen/Betrag 11^101^0 00000000 000^0^00 kompl . 2.2 Festkommazahlen 95 b) Kodieren Sie für n = 6 und i = Dezimal 00^001 2 die folgenden Zahlen im Zweier-Komplement. Binär Vorzeichen/Betrag 11^010110 .bµoMO in +000001 * T c) -2,25 MOAM 0 000000 5,5 Kodieren Sie für n = 8 und i = 0 die folgenden Zahlen binär im Zweier-Komplement. Dezimal Binär Einer-Kompl. -17 -5 17 T d) Kodieren Sie für n = 6 und i = Komplement. Dezimal -3,75 -0,5 7,25 2 die folgenden Zahlen binär im Zweier- Binär Einer-Kompl. 96 e) 2 Darstellung von Zahlen und Zeichen Wie lässt sich ein Überlauf von Zahlen feststellen, die im Zweier-Komplement kodiert sind? post pos pos = hey they f) hey = Berechnen Sie 37 - 53 im Zweier-Komplement. 37=32+4+1 53 01 32+16+4+1=00110101 : with 1001010 + 00100^01 O 0 0 0 0001 - ^ A 11001011 ( 01 0010 = Eaten 'jYa Y . no °o° 001011 ) 2.2 Festkommazahlen T g) Berechnen Sie 17 - 23 im Zweier-Komplement. 97 98 2 Darstellung von Zahlen und Zeichen 2.3 Gleitkommazahlen nach IEEE 754 Durch die fest definierte Kommastelle sind bei Festkommazahlen die Abstände zwischen den einzelnen Zahlenwerten äquidistant. Aus diesem Grund (und aufgrund der endlichen Anzahl an Stellen n) können mit Festkommazahlen nicht gleichzeitig sehr große Zahlen und sehr kleine Zahlen dargestellt werden. Bei Gleitkommazahlen ist diese Einschränkung aufgehoben. Die Abstände zwischen den einzelnen Zahlenwerten sind um den Wert 0 herum sehr klein. Für große Zahlen werden die Abstände sehr groß, wie in nachstehender Grafik skizziert. 0 Erreicht wird diese Eigenschaft dadurch, dass die Position des Kommas nicht festgelegt ist, sondern in der Zahl durch Angabe eines Exponenten e definiert wird. Der Exponent legt fest, um wieviel die Kommastelle nach links oder rechts verschoben werden muss. Gleitkommazahlen werden wie folgt kodiert: s e . . .: : . Too 000 f . . . Bei 32 Bit breiten Gleitkommazahlen (einfache Genauigkeit) gilt die Aufteilung • s = 1 Bit • e = 8 Bit • f = 23 Bit, bei 64 Bit breiten Gleitkommazahlen (doppelte Genauigkeit) gilt die Aufteilung • s = 1 Bit • e = 11 Bit • f = 52 Bit. Als Wert ergibt sich für esohieblh • für normalisierte Gleitkommazahlen (Normalfall) v = ( 1)s · 1,f · 2e K, • für de-normalisierte Gleitkommazahlen (Spezialfall) v = ( 1)s · 0,f · 21 P na he bei 0 wicht na he , K. bei 1 2.3 Gleitkommazahlen nach IEEE 754 99 Die Konstante K hat • bei einfacher Genauigkeit (32 Bit) den Wert K = 127, • bei doppelter Genauigkeit (64 Bit) den Wert K = 1023. Eine Gleitkommazahl gilt als normalisiert, wenn beim Exponenten e weder alle Bits gesetzt noch alle Bits gelöscht sind, d.h. • 0 < e < 255 bei 32 Bit • 0 < e < 2047 bei 64 Bit. Eine denormalisierte Gleitkommazahl liegt vor, wenn e = 0 und gleichzeitig f > 0. Spezialfälle: • 0: • e=0 • f =0 . • ±1: • s: +1 ) 0; 1)1 • e: alle Bits gesetzt ) 255 bei 32 Bit, 2047 bei 64 Bit • f: alle Bits 0 • NaN (Not a Number) • e: alle Bits gesetzt ) 255 bei 32 Bit, 2047 bei 64 Bit • f: > 0 100 Diese Seite ist absichtlich leer. 2 Darstellung von Zahlen und Zeichen 2.3 Gleitkommazahlen nach IEEE 754 Diese Seite ist absichtlich leer. 101 102 2 Darstellung von Zahlen und Zeichen Aufgaben Format von Gleitkommazahlen a) Geben Sie das Format von 32 Bit und 64 Bit Gleitkommazahlen an. 1.60000^0^1 sl 1 e f .ze¥ e : [email protected] b) Wie berechnet sich der Wert einer 32 bzw. 64 Bit breiten normalisierten Gleitkommazahl aus ihrem Bitmuster? Geben Sie den Wert der Konstanten K an! .j 27/1023 Bit @64 @s2 c) In welchem Bereich liegt e bei normalisierter Zahldarstellung? 3 Bit ? 64 Bit Ocec : : O<e< 255 2047 d) Wie wird die Zahl 0.0 dargestellt in Bezug auf s, e and f? s=e=f=O 2.3 Gleitkommazahlen nach IEEE 754 e) Was ist eine denormalisierte Gleitkommazahl, wie wird sie kodiert und wie berechnet sich ihr Wert? 01 f fnjs zn - K . . e f) 103 = 0 1>0 , Welchen Nutzen haben denormalisierte Gleitkommazahlen? Darskllen ganz uahe von Zahler bei 0 g) Wie kodiert man die Gleitkommazahl ‘‘unendlich’’? e s h) +1 : . f: gesekt a Mit welchen Werten von e und f wird ausgesagt, dass es sich um ‘‘keine Zahl’’ (NaN = not a number) handelt? : f i) Bib alk : alk : Bib qsekt Geben Sie ein Beispiel an, wie es zu einem Ergebnis kommen kann, das ‘‘keine Zahl’’ ist. a eo 104 2 Darstellung von Zahlen und Zeichen Rechnen mit Gleitkommazahlen a) Kodieren Sie 3,625 und 13,5 als 32 Bit breite Gleitkommazahlen und tragen Sie das Bitmuster in die angegebene Tabelle ein. 3675 : M 's ,1On=nMO1→ k¥ f e- K e- 1+4=1-1^27--128 - 13,5 : 1^01,1=1 e- ,nom k z - e 130 - s 3,625: . O . . 13,5: 01000000011010 010000010101100 . . . . . 2.3 Gleitkommazahlen nach IEEE 754 105 b) Berechnen Sie 3,625 + 13,5 im Binärsystem bei Verwendung einer 32 Bit Gleitkommakodierung. Expownkn passers an : fihrendelausn 3,62¥ ... , 10000000 11010 13,5*8000^090%50.0 10000001£ . -0 . Ono .o eI%¥%omoxg¥ 100000100111010£ 1,101100000 . walisieoen . . . exp =) . exp = +1 ← ⇐ 1100010010 . :O - - 110001001.23M¥ - - 1 ( von 4 1000^-00^-0171125 uoiehskrfeik ) Bitmuster des Ergebnisses: 01000001^00010010 . . . 106 c) T 2 Darstellung von Zahlen und Zeichen Bestimmen Sie aus dem Ergebnis-Bitmuster das Ergebnis der Addition 3,625 + 13,5 d) Kodieren Sie 1,75 und 5,125 als 64 Bit breite Gleitkommazahlen und tragen Sie das Bitmuster in die angegebene Tabelle ein. 1,75 5,125 2.3 Gleitkommazahlen nach IEEE 754 T e) 107 Berechnen Sie 1,75 + 5,125 im Binärsystem bei Verwendung einer 64 Bit Gleitkommakodierung. Bitmuster des Ergebnisses: 108 T f) 2 Darstellung von Zahlen und Zeichen Bestimmen Sie aus dem Ergebnis-Bitmuster das Ergebnis der Addition 1,75 + 5,125 108 T f) 2 Darstellung von Zahlen und Zeichen Bestimmen Sie aus dem Ergebnis-Bitmuster das Ergebnis der Addition 1,75 + 5,125 108 T f) 2 Darstellung von Zahlen und Zeichen Bestimmen Sie aus dem Ergebnis-Bitmuster das Ergebnis der Addition 1,75 + 5,125 108 T f) 2 Darstellung von Zahlen und Zeichen Bestimmen Sie aus dem Ergebnis-Bitmuster das Ergebnis der Addition 1,75 + 5,125