Universität Leipzig Institut für Informatik Dr. Monika Meiler Datendarstellung im Rechner Problem Kreative Phase 90 % Umsetzung Algorithmus Programmierung (Codierung) Automatisierte Phase 10 % Programm in höhere Programmiersprache Übersetzung durch spezielle Programme (Compiler) Programm in Maschinensprache Interpretation durch CPU (Decodierung) Ausführung des Programms Propädeutikum Kapitel 5 Folie 1/7 Universität Leipzig Institut für Informatik Dr. Monika Meiler Algorithmus Programm Codierung Objekt Daten Decodierung x y z x y , mit 1 z Beispiel aus terms_a.c float a = 1e10, b = 1e10, c = 1e-10; printf( "%f\n", a * ( a - b + c)); /* a*((a-b)+c) => 1 */ printf( "%f\n", a * ( a + c - b)); /* a*((a+c)-b) => 1 */ /* Rechner => 0 */ Beispiel aus terms_b.c int x = 40, y; float a = 1e10; y = a * x; printf( "%d\n", y); /* y=1e10*40 => 4e11 */ /* Rechner => 2147483647 */ Propädeutikum Kapitel 5 Folie 2/7 Universität Leipzig Institut für Informatik Dr. Monika Meiler Darstellbare natürlichen Zahlen mit maximal 4 Bit (n = 4): z3 Dezimalzahl 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Propädeutikum z2 z1 Computerzahl 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 z0 Berechnung 0 2 1 21 2 21 20 3 ... ... ... 2 1 0 2 2 2 7 23 8 ... ... ... ... ... ... 3 2 1 0 2 2 2 2 15 0 Kapitel 5 Folie 3/7 Universität Leipzig Institut für Informatik Dr. Monika Meiler Darstellbare ganzen Zahlen mit maximal 4 Bit (n = 4): s Dezimalzahl 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 z2 z1 z0 Computerzahl 0111 0110 0101 0100 0011 0010 0001 0000 1111 1110 1101 1100 1011 1010 1001 1000 Berechnung 2 2 21 20 7 2 2 21 6 ... ... ... ... 0 2 1 0 4 2 1 16 1 15 24 2 16 2 14 ... ... ... ... 4 2 7 16 7 9 2 4 8 16 8 8 8,7 0,15: Allgemein: 2 n ,2 n 1 0,2 n1 1 Propädeutikum Kapitel 5 Folie 4/7 Universität Leipzig Institut für Informatik Dr. Monika Meiler Darstellbare positive rationale Zahlen der Menge Mz( 3, -1, 1): Maschinenzahl Wert (0.00)2 * 2 0 (1.00)2 * 2-1 (1.01)2 * 2-1 (1.10)2 * 2-1 (1.11)2 * 2-1 (1.00)2 * 20 (1.01)2 * 20 (1.10)2 * 20 (1.11)2 * 20 (1.00)2 * 21 (1.01)2 * 21 (1.10)2 * 21 (1.11)2 * 21 B B P B B P P B B P P B B P P B B P P B B P P B B P P B B P P B B P P B B P P B B P P B B P P B B P P P =0 = 4/8 = 5/8 = 6/8 = 7/8 = 8/8 = 10/8 = 12/8 = 14/8 = 16/8 = 20/8 = 24/8 = 28/8 interne Darstellung 0 | 00 | 00 0 | 01 | 00 0 | 01 | 01 0 | 01 | 10 0 | 01 | 11 0 | 10 | 00 0 | 10 | 01 0 | 10 | 10 0 | 10 | 11 0 | 11 | 00 0 | 11 | 01 0 | 11 | 10 0 | 11 | 11 0 MIN ⇒z' MAX z' z MIN 0 Propädeutikum 4 5 6 7 8 10 12 14 16 MAX 20 24 28 /8 Kapitel 5 Folie 5/7 Universität Leipzig Institut für Informatik Dr. Monika Meiler Allgemein (mit negativen Zahlenbereich): MAX ,MIN 0 MAX , MIN Wertebereich für Gleitkommatypen: -MAX -MIN MIN MAX 0 neg. Überlauf neg. pos. Unterlauf pos. Überlauf Behandlung nicht darstellbarer Zahlen: 1. 2. 3. z > MAX oder z < -MAX: Überlauf ( Infinity, -Infinity) ⇒ -MIN < z < 0 oder 0 < z < MIN: Unterlauf ⇒ -MAX < z < -MIN oder MIN < z < MAX: Maschinenzahlbereich ⇒ Propädeutikum Abbruch: Sonderbehandlung, Runden auf darstellbare Zahlen: Runden auf darstellbare Zahlen: Laufzeitfehler Rundungsfehler Rundungsfehler Kapitel 5 Folie 6/7 Universität Leipzig Institut für Informatik Dr. Monika Meiler Standard für rationalen Zahlenbereiche: (IEEE – Standard1, Institute of Electrical and Electronics Engineers) TP PT 32 – Bit – Format ( 4 Byte) für einfach genaue Zahlen oder auch „single“ 64 – Bit – Format ( 8 Byte) für doppelt genaue Zahlen oder auch „double“ 80 – Bit – Format ( 10 Byte) für erweitert genaue Zahlen oder auch „double-extended“ Bezeichnung single double Byteanzahl s [Bit] 4 8 M [Bit] 1 1 24 53 s Vorzeichenbit: 0 ... +, 1 ... M Länge der Mantisse, einschließlich hidden bit E Anzahl der Exponentenbit Sonderbehandlung: M' = 0 (E = r - 1) z = 0.0 E' = E'max (E = R + 1) z = ( -1)s * ∞; -Infinity, Infinity E' = 0 Typ MAX < 2R+1 MIN = 2r Unterlauf (Sonderbehandlung) gültige Dezimalstellen TP 1 PT E [Bit] C, Java: float ⇒ single ±3.40282347 E +38 ±1.17549435 E -38 ±1.40239846 E -45 7 r 8 11 -126 -1022 R 127 1023 C 127 1023 r kleinster Exponent R größter Exponent C Verschiebungskonstante M' ≠ 0 z = ( -1)s * 2r * (0.M’)2; zusätzliche Zahlen im Unterlauf NaN (Not a Number); keine gültige Gleitpunktzahl double ±1.797693138462315750 E +308 ±2.225073858507201383 E -308 ±4.940656458412465 E -324 15 http://www.h-schmidt.net/FloatApplet/IEEE754de.html Propädeutikum Kapitel 5 Folie 7/7