Numerisches Programmieren bung 1 Adrian Schultz Thema Zahldarstellungen
Numerisches Programmieren – Übung 1 Adrian Schultz Thema: Zahldarstellungen, Auslöschung
Umrechnung von Zahlen Beispiel: Dezimal zu Binär 14 < 16 = 24 4 bit zur Darstellung notwendig 1 1 1 0 23 = 8 22 = 4 21 = 2 20 = 1 14 - 1 * 8 = 6 6 - 1 * 4 = 2 2 - 1 * 2 = 0 0 - 1 * 0 = 0 Adrian Schultz (TUM) | Numerisches Programmieren | Übung 1 2
Umrechnung von Zahlen Beispiel: Binär zu Hexadezimal Dezimal 0 1 2 3 4 5 6 Binär 0 1 10 11 100 101 110 Hexadezimal 0 1 2 3 4 5 6 1 1 0 5 1 1 0 B Adrian Schultz (TUM) | Numerisches Programmieren | Übung 1 1 7 8 9 10 11 12 13 14 15 111 1000 1001 1010 1011 1100 1101 1110 1111 7 8 1 0 D 9 1 A 1 B 1 C 1 D E F 1 F 3
Umrechnung von Zahlen Beispiel: Dezimal zu Hexadezimal 4267 < 65536 = 164 4 Stellen zur Darstellung notwendig 1 0 A B 163 = 4096 162 = 256 161 = 16 160 = 1 4267 - 1 * 4096 = 171 - 0 * 256 = 171 - 10 * 16 = 11 11 - 11 * 1 = 0 Adrian Schultz (TUM) | Numerisches Programmieren | Übung 1 4
Umrechnung von Zahlen Beispiel: Bruch zu Binär 1/7 = 12/1112 1 : 1 1 0 0 1 0 Schriftliche Division 1 1 = 0 . 0 0 1 . . . 0 1/7 = 12/1112 = 0. 0012 Adrian Schultz (TUM) | Numerisches Programmieren | Übung 1 5
Darstellung von ganzen Zahlen Beispiel: Dezimal zu Zweierkomplement -5 in 4 bit darstellen 1 0 1 1 -23 = -8 22 = 4 21 = 2 20 = 1 (-5) - 1 * (-8) = 3 3 - 1 * 0 = 3 3 - 1 * 2 = 1 1 - 1 * 1 = 0 Adrian Schultz (TUM) | Numerisches Programmieren | Übung 1 6
Umrechnung in Gleitkommazahlen Beispiel: 13 in binäre Gleitkommazahl umrechnen 1. In Binärzahl: 2. Normalisieren: 3. Exponent anpassen: 1101 1, 101 23 (Komma nach links: + , rechts: -) 4. Fertiges Ergebnis: 1, 101 * 23 Adrian Schultz (TUM) | Numerisches Programmieren | Übung 1 7
IEEE-Gleitkommazahl (32 bit) Vorzeichen: 1 negativ / Exponent: 0 0 0 0 0 1 1 1 1 entspricht -127 entspricht 0 entspricht 128 1 1 0 0 0 0 0 0 Mantisse: 0 positiv Normalisierung: führende 1 der Mantisse wird nicht gespeichert (-1)Vorzeichen * 1. Mantisse * 2 Exponent Adrian Schultz (TUM) | Numerisches Programmieren | Übung 1 8
Runden der Mantisse (IEEE-Gleitkommazahl) • Eindeutige Fälle • xxxxxxxxxxxx | 10… 01 bis xxxxxxxxxxxx | 11… 11 aufrunden • xxxxxxxxxxxx | 00… 01 bis xxxxxxxxxxxx | 01… 11 abrunden • Uneindeutige Fälle • xxxxxxxxxxx 0 | 10… 00 abrunden • xxxxxxxxxxx 1 | 10… 00 aufrunden Adrian Schultz (TUM) | Numerisches Programmieren | Übung 1 9
Maschinengenauigkeit • εMA ist die größte Zahl für die 1 + εMA = 1 gilt εMA ≈ 2 -(Mantissenbits + 1) • Erste nicht mehr exakt darstellbare, ganze Zahl 2 Mantissenbits + 1 Adrian Schultz (TUM) | Numerisches Programmieren | Übung 1 10
Absorption Gegeben: x 1, x 2 mit | x 1 |>>| x 2 | z. B. : x 1 = 1. 000, x 2 = 0. 000001 Exakte Rechnung: x 1 + x 2 ≈ x 1 Gerundete Rechnung: x 1 + x 2 = x 1 Absorption Beispiele: Assoziativgesetz & Berechnung von π nach Archimedes Adrian Schultz (TUM) | Numerisches Programmieren | Übung 1 11
Geschafft! Bei Fragen: • e-Mail an adrian. schultz@tum. de • oder jetzt noch kurz vorkommen Bis nächste Woche! Adrian Schultz (TUM) | Numerisches Programmieren | Übung 1 12
- Slides: 12