Vertiefungsstoff zum Thema „Darstellung von Zahlen“ Addition von Zahlen in BCD-Kodierung Einerkomplementdarstellung von ganzen Zahlen Gleitpunktdarstellung nach dem IEEE-754-Standard
Rechnen mit BCD-codierten Zahlen Idee Verwende zur Codierung der Ziffern 0, ..., 9 eine Tetraden-Codierung, d.h., codiere jede Dezimalziffer mit einem 4 Bitwort: cBCD : {0, ..., 9} ® B4 Mehr-zifferige Dezimalzahlen werden dann ziffernweise mit der natürlichen Fortsetzung c*BCD codiert: Beispiel: c*BCD(13) = cBCD(1) cBCD(3) = 0001 0011 23 22 21 1 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Frage Wie rechnet (addiert) man mit BCD-codierten Zahlen? Antwort: siehe nächste Folie 1 1 ...... 1 1 1 1
Mit der BCD-Codierung werden mehrstellige Dezimalzahlen ziffernweise codiert, wobei die Codierung der Ziffern {0, 1, ..., 9} wie in der Tabelle angegeben erfolgt. Rechenbeispiel: Geben Sie die BCD-Codierung der beiden Dezimalzahlen 3617 und 5438 an. Die Codierung erfolgt ziffernweise. 3 6 1 7 0011 0110 0001 0111 5 4 3 8 0101 0100 0011 1000 Wie addiert man BCD-codierte Zahlen? Idee – Addiere ziffernweise, d.h. schreibe die Binärdarstellungen der Ziffern untereinander und führe Binäraddition durch: (3617)10 = 0011 0110 0001 0111 + (5438)10 = 0101 0100 0011 1000 1000 1010 0100 1 1111 – Problem: Behandlung von Überläufen! Binärwörter 1010 und 1 1111 sind nicht im BCD!
Addition von BCD-codierten Zahlen – Addiere ziffernweise, d.h. schreibe die Binärdarstellungen der Ziffern untereinander und führe Binäraddition durch: (3617)10 = 0011 0110 0001 0111 + (5438)10 = 0101 0100 0011 1000 1000 1010 0100 1 1111 Ideen zur Behandlung von Überläufen: Ansatz 1 – Lege eine Tabelle an, in der man nachschaut, wie die korrekte Ziffer bei einem der möglichen „pathologischen“ Fälle aussieht. (Es gibt insgesamt 6 solcher Fälle.) Im Beispiel gibt es zwei pathologische Fälle: 1) Zwei Binärziffern addieren sich zu 1010, dann lautet die richtige Ziffer der Summe 0000 jedoch entsteht ein Übertrag von 1, der zur Summe der nächsten Zifferaddition dazugezählt werden muss. 2) Zwei Binärziffern addieren sich zu 1 1111, dann lautet die richtige Ziffer der Summe 0101. Der Übertrag von 1 wird zur Summe der nächsten Zifferaddition dazugezählt.
Addition von BCD-codierten Zahlen (3617)10 = 0011 0110 0001 0111 + (5438)10 = 0101 0100 0011 1000 1000 1010 0100 1 1111 Ideen zur Behandlung von Überläufen: Ansatz 2: – Untersucht man die möglicherweise auftretenden 6 pathologischen Fälle, so erkennt man, dass man die jeweils richtige Ziffer durch Addition des Korrekturmusters 0110 erhält. Das heißt, wenn immer bei der Addition eine Summe S = s4s3 s2s1 > 1001 auftritt, addiert man zu S zunächst das Korrekturmuster 0110. Dies ergibt dann die richtige Ziffernfolge z4z3 z2z1 sowie einen Übertrag von 1. Im Beispiel: 0110 0100 1010 somit ist s4s3 s2s1 größer als 1001 so dass das Korrekturmuster 0110 aufaddiert werden muss: 1010 1 0000 Wie man sieht, erhält man die richtige Binärzahl 0000 = (0)10 sowie einen Übertrag von 1 für die nächste Stelle.
Addition von BCD-codierten Zahlen (3617)10 = 0011 0110 0001 0111 + (5438)10 = 0101 0100 0011 1000 1000 1010 0100 1 1111 Addition der Binärcodierungen 0111 und 1000 Im Beispiel: 0111 1000 1 1111 somit ist s4s3 s2s1 größer als 1001 so dass das Korrekturmuster 0110 aufaddiert werden muss. Es ist jedoch bereits ein Überlauf entstanden, so dass eine 5-stellige Binärzahl vorliegt. In diesem Fall wird das Korrekturmuster nur zu den Stellen s4s3 s2s1 addiert Summe: 1 1111 1111 5te Stelle ignorieren! 0110 Korrekturmuster zu s4s3 s2s1 addieren. 1 0101 Wie man sieht, erhält man die richtige Binärzahl 0101 = (5)10 sowie einen Übertrag von 1 für die nächste Stelle.
Addition von BCD-codierten Zahlen insgesamt ergibt sich somit folgende Rechnung: (3617)10 = 0011 0110 0001 0111 + (5438)10 = 0101 0100 0011 1000 1 1111 (7+8) 1111 betrachte nur 4 Stellen 0110 Korrekturmuster aufaddieren 1 0101 korrekte Ziffer mit Überlauf 0100 (3+1) 0001 plus Überlauf 0101 korrekte Ziffer, kein Überlauf 1010 (4+6) 0110 Korrekturmuster aufaddieren 1 0000 korrekte Ziffer mit Überlauf 1000 (3+5) 0001 plus Überlauf 1001 korrekte Ziffer, kein Überlauf Somit ergibt sich: ( 1001 0000 0101 0101 )BCD c) BCD -> ( x )10 ( 9 0 5 5 )10
Weitere Ansätze zur Codierung von Ziffern Ziffern-Codierungen: Sind spezielle n-Bit-Codierungen c : A ® Bn. Sie wurden entwickelt, um arithmetische Operationen auf codierten Wörtern zu unterstützen. 4-Bit reichen zur Darstellung von 10 Ziffern aus. Spezielle Codes zur Zifferndarstellung BCD-Codierung: Tetraden-Codierung, d.h., c : A ® B4 EBCDIC (Extended Binary Coded Decimal Interchange Code), ein auf 8-Bit erweiterter BCD-Code gemäß: cEBCDIC(i) = "1111" + cBCD(i) = 1111cBCD(i) Aiken-Codierung: Tetraden-Codierung mit Darstellung jeder Ziffer d Î {0, ..., 9} in 4 Bits durch: - Binärdarstellung von d, für d Î {0, ..., 4} (also 0000, ...,0100) - Binärdarstellung von d+6, für d Î {5, ..., 9} (also 1011, ...,1111) Exzess-3-Codierung: Tetraden-Codierung, Darstellung jeder Zahl z durch Ziffer dz in 4 Bits durch "Dualdarstellung" von z+3.
Zweier-Komplementdarstellung (allgemein) Die Zweierkomplement-Darstellung (in n Stellen) ist die gebräuchlichste interne Darstellung ganzer positiver und negativer Zahlen. Definition: Sei A2K,n = {-2n-1, ... , 0, 1, ... , 2n-1-1 } der darzustellende Zahlenbereich. Unter der Zweier-Komplementdarstellung versteht man die Codierung: C2,n (x) falls 0 £ x £ 2n-1 C2K,n (x) = C2,n (2n + x) falls - 2n-1 £ x < 0 Anmerkung: Negative Werte lassen sich am weitesten links stehenden Bit erkennen. Es gibt nur eine (natürliche) Darstellung der Zahl 0. Darstellung des Zahlenbereichs ist unsymmetrisch zum Nullpunkt.
Gibt es weitere Komplementdarstellungen ? Ja, z.B. die sog. 1-Komplement-Darstellung (in n Stellen). Die 1-Komplement-Darstellung ist analog zur Zweier-Komplement-Darstellung, jedoch mit dem Unterschied, dass nach der Komplementbildung keine 1 zur Zahl addiert wird. Definition: darzustellende Zahlenbereich: A1K,n = { -2n1 + 1, ... , 0, ... , 2n1 -1 } Unter der 1-Komplementdarstellung versteht man die Codierung: C2,n (x) falls 0 £ x < 2n-1 C2Komp (x) = C2,n (2n -1 + x) falls -2n-1 < x £ 0 Anmerkung: Es gibt zwei Darstellungen der Zahl 0 (dadurch symmetrisch zum Nullpunkt). Überlaufbehandlung erforderlich: muss zum Ergebnis addiert werden. Führendes Bit signalisiert, dass es sich um negative Zahl handelt. Ihr Betrag lässt sich durch Komplementbildung ermitteln.
Addition mit 1-Komplementdarstellung (-4 ) + (-3) = (-7): 1011 + 1100 1 0111 + 1 1 1000 -7 Mit Überlauf: 4 + 3 = 7: 0100 + 0011 0111 = 7 Ohne Überlauf: Die Zahl 0 hat zwei Darstellungen! 1111 0000 1110 0001 -0 1 1101 -1 0010 -2 2 1100 6 + 6 = 12: 0110 + 0110 0011 -3 3 1011 -4 4 0100 -5 5 1010 0101 -6 6 1100 = -3 1001 -7 7 7 0110 1000 0111
Ähnlichkeit der Darstellungsformen am Beispiel Die Zahl –7710 soll mit 8 Bit dargestellt werden: (77)10 = (0100 1101)2 Mit Vorzeichenbit : – 77= 1100 11012 Einerkomplement : – 77= 1011 00102 Zweierkomplement : – 77= 1011 00112c Bitweise Komplementbildung Addition von 1 Durch die Addition von 1 kann sich das Bitmuster jedoch auch an einer anderen Stelle ändern. Beispiel: Darstellung der Zahl –2010 mit 8 Bit: Mit Vorzeichenbit: – 20= 1001 01002 Einerkomplement: – 20= 1110 10112 Zweierkomplement: – 20= 1110 01002c Bitweise Komplementbildung Addition von 1
Gleitpunkt-Darstellung nach IEEE-754-Standard Die Berufsvereinigung IEEE (Institute of Electrical and Electronics Engineers) hat einen Standard verabschiedet, die in den meisten Rechnern heute verwendet wird: IEEE-754-Standard für n-Bit-GPZ Gleitpunktdarstellung nach IEEE-754 V Charakteristik c Betrag der Mantisse m (1 £ |m| < 2 ) n-1 | n-2 | k-2 0 Vorzeichen V: 1 Bit für Vorzeichen der Mantisse Charakteristik c: Exzess-q-Darstellung des Exponenten exp = c-q mit q = 2(nk1) – 1 Mantisse m: Mit Werten zwischen 1 £ |m| < 2. Wegen Normierung auf Format 1.xxx....xxx wird die führende 1 nicht gespeichert! m -> m'. dargestellte Zahl x = (-1)V (1 + m') 2(cq)
Gleitpunkt-Darstellung nach IEEE-754-Standard Einfache Genauigkeit V Charakteristik Betrag der Mantisse m (1 £ m < 2) 31 | 30 23 | 22 0 => 8-Bit Charakteristik: Exponent zwischen -127 und 128 (entspricht dem Dezimalbereich von 1039 ... 1039 ) und (23+1)-Bit Mantisse: Werte zwischen 1 und 2- 223 (~ 107 ). Doppelte Genauigkeit V Charakteristik Betrag der Mantisse m (1 £ m < 2) 63 | 62 52 | 51 0 11-Bit Charakteristik: Exponent zwischen -1023 und 1024 (~10307...10307) (52+1)-Bit Mantisse: Werte zwischen 1 und 2- 252 (~ 1015 ).
Gleitpunkt-Darstellung nach IEEE-754-Standard Erweiterte Genauigkeit (Datentyp „extended“ ) V Charakteristik Betrag der Mantisse m (1 £ m < 2) 79 | 78 64 | 63 0 15-Bit Charakteristik: Exponent zwischen 214 + 1 und 214 (64+1)-Bit Mantisse: Werte zwischen 1 und 2- 264 Sonderfälle im IEEE-754-Standard Normalisierte Zahl: ± 0 < exp < 255 mit beliebiger Mantisse m Denormalisierte Zahl: ± exp = 0 mit m 0 beliebig Darstellung der Zahl 0 durch: c = 0 und m =0 Darstellung von „Unendlich“ durch: c maximal und m = 0 Darstellung von „Not a Number“ (NaN): c maximal und m 0