Grundzüge der Informatik5-6S - Informatik

Werbung
Inhalt
Grundzüge der Informatik
Tutorium Gruppe 6
Termin 5 – 07.12.2006
Apfelthaler Kathrin
Einführung Numerik
Fest- und Gleitpunktdarstellung
Test-Beispiel
[email protected]
Apfelthaler Kathrin, Dezember 2006
Numerik
Festpunkt-Darstellung
Berechnung unter Verwendung reeller
Zahlen (oder deren Nährung) =
numerische Berechnung
Festpunkt-Darstellung
Gleitpunkt-Darstellung
Feste Anzahl von Nachkommastellen
V
VZ g
n
Betrag N = n + g + 1
(-1)v * 2-n ∑ [j=0,N-2] dj * 2i
Apfelthaler Kathrin, Dezember 2006
Apfelthaler Kathrin, Dezember 2006
Festpunkt-Darstellung Bsp
Festpunkt-Darstellung Bsp
N = 12 Bit, n = 3 Bit
(1001 1000 1110)2 =
1
001 1000 1
VZ g
Vorkommateil:
110
n
1 · 20 =
0 · 21 =
0 · 22 =
0 · 23 =
1 · 24 =
1 · 28 =
0 · 29 =
0 · 210 =
1
001 1000 1
VZ g
1
0
0
0
16
32
0
0
110
n
——
49
Apfelthaler Kathrin, Dezember 2006
Apfelthaler Kathrin, Dezember 2006
1
Festpunkt-Darstellung Bsp
Nachkommateil:
0 · 20 = 0
1
1 · 21 = 2
VZ
2
1·2 = 4
——
6 : 23 = 0.75
Festpunkt-Darstellung Bsp 2
001 1000 1
g
110
n
N = 12 Bit, n = 3 Bit
(-10.375)10 =
Vorkommateil:
•
•
•
•
(1001 1000 1110)2 = (-49.75)10
10 : 2 = 5
5:2=2
2:2=1
1:2=0
0 Rest
1 Rest
0 Rest
1 Rest
• (10)10 = (1010)2
Apfelthaler Kathrin, Dezember 2006
Festpunkt-Darstellung Bsp 2
N = 12 Bit, n = 3 Bit
(-10.375)10 =
Nachkommateil:
• 0.375 * 2 = 0.75
• 0.75 * 2 = 1.5
• 0.5 * 2 = 1
Apfelthaler Kathrin, Dezember 2006
Festpunkt-Darstellung Bsp 2
N = 12 Bit, n = 3 Bit
(-10.375)10 = (1010.011)2
1
00001010
VZ g
0
1
1
011
n
• (0.375)10 = (0.011)2
Apfelthaler Kathrin, Dezember 2006
Festpunkt-Darstellung
Zahlen haben konstanten Abstand 2-n
Reservierung von n Bit für
Nachkommastellen → Intervall zwischen
größter und kleinster Zahl sehr klein
Probleme treten auf bei Darstellung von
großen ganzen Zahlen
(→ Reduktion der Nachkommastellen)
kleinen Zahlen
(→ Reduktion der Vorkommastellen)
Apfelthaler Kathrin, Dezember 2006
Apfelthaler Kathrin, Dezember 2006
Gleitpunkt-Darstellung
Skalierungsparameter wird nicht fixiert,
sondern ist veränderbar
Darstellung von Zahlen, die betragsmäßig
sehr groß UND sehr klein sein können
Darstellung:
+/- Mantisse * Basis +/- Exponent
• emin = kleinster Exponent
• emax = größter Exponent
Apfelthaler Kathrin, Dezember 2006
2
Normalisierte Gleitpunktzahl
Dieselbe Zahl kann auf verschiedene Weisen
dargestellt werden:
- 123 * 10-7 = -12.3 *10-6
Normalisierung:
Normalisierte Gleitpunktzahl
Zahl Null nicht mehr darstellbar
Sonderdarstellung:
• 1.00 * bemin-1
Mantisse verfügt über 1 Vorkommastelle, die
ungleich „0“ ist
• Bsp: -1.23 * 10-5
Problem: einige Zahlen sind aufgrund der
Normalisierung im Intervall nicht mehr
darstellbar
Apfelthaler Kathrin, Dezember 2006
Denormalisierte Gleitpunktzahl
Subnormale Zahlen
m0 (1.Stelle der Mantisse) = 0
für e = emin
Apfelthaler Kathrin, Dezember 2006
Normalisierung
Exponent wird solange verkleinert /
vergrößert, bis Mantisse die
Normalisierungsbedingung erfüllt
0.10 * 22 = 1.00 * 21
Exponent muss dabei im vorgegebenen
Intervall bleiben
Exponent größer als emax = Überlauf
Exponent kleiner als emin = Unterlauf
Apfelthaler Kathrin, Dezember 2006
Struktur
Anzahl der Gleitpunktzahlen
Parameter:
Basis (b>= 2)
Mantissenlänge (p >= 2)
Kleinster Exponent (emin < 0)
Größter Exponent (emax > 0)
Normalisierungsindikator denorm {true,false}
Schreibweise
Apfelthaler Kathrin, Dezember 2006
F(b,p,emin,emax,denorm)
Apfelthaler Kathrin, Dezember 2006
Normalisierte Zahlen:
Denormalisierte Zahlen:
1 + 2 * (b – 1) * bp-1 * (emax – emin + 1)
2 * (bp-1 - 1)
Größte Gleitpunktzahl:
Kleinste Gleitpunktzahl:
b * (1-b-p) * bemax
bemin
Apfelthaler Kathrin, Dezember 2006
3
Abstände
Benachbarte Zahlen haben konstanten
Abstand:
be-p+1 = 1 ulp * be
Codierung
• ulp = unit of last position (Mantisse: Wert einer
Einheit der letzten Stelle)
VZ EXPONENT MANTISSE
Exponent: in Exzessdarstellung
Zahlen mit neg. Exponenten scheinen
wegen führendem Vorzeichen im
Exponenten größer als Zahlen mit pos.
Vorzeichen → Exzessdarstellung behebt
dieses Problem
Grundformate:
Single bzw. Double Format
Apfelthaler Kathrin, Dezember 2006
Implizites erstes Bit
1.Stelle der Mantisse muss aufgrund der
Normalisierungsbedingung „1“ sein
(nur bei Basis = 2)
Diese Stelle wird nicht codiert.
(→ Einsparung einer Mantissenstelle)
Apfelthaler Kathrin, Dezember 2006
Rundung
Jeder reellen Zahl wird eine Maschinenzahl
zugeordnet
Rundung zum nächstgelegenen Wert
Apfelthaler Kathrin, Dezember 2006
Rundung
„überzählige“ Mantissenstellen werden
abgeschnitten
Gerichtetes Runden (directed rounding)
Apfelthaler Kathrin, Dezember 2006
Rundungsfehler
Abschneiden (truncate)
Round away from zero: Nachbar, der weiter
weg liegt von Null, wird gewählt
Round to even: Nachbar, dessen letzte
Mantissenstelle gerade ist, wird gewählt
Absoluter Rundungsfehler
Relative Rundungsfehler
ε (x) = ε□(x) = □x - x
p(x) = (□x – x) / x = ε (x) / x
x = min(x1,x2) bzw. x = max(x1,x2)
Apfelthaler Kathrin, Dezember 2006
Apfelthaler Kathrin, Dezember 2006
4
Gleitpunktdarstellung
Codierung
Schritt 1: Konvertierung der Zahl
Schritt 2: Normalisierung
Schritt 3: Exponent bilden
Schritt 4: Vorzeichenbit
Gleitpunktdarstellung
Codierung
Codierung der Zahl (-172.625)10 in das
Gleitpunktsystem F(2,24,-126,127,true)
Vorkommateil umwandeln:
Apfelthaler Kathrin, Dezember 2006
Gleitpunktdarstellung
Codierung
Nachkommateil umwandeln:
0.625 * 2 = 1.25
0.25 * 2 = 0.5
0.5 * 2 = 1
(0.625)10=(101)2
Schritt 2: Normalisierung
(10101100.101)2 * 20
= (1.0101100101)2 * 27
(172)10=(10101100)2
Gleitpunktdarstellung
Codierung
Codierung der Zahl (-172.625)10 in das
Gleitpunktsystem F(2,24,-126,127,true)
Apfelthaler Kathrin, Dezember 2006
0 Rest
0 Rest
1 Rest
1 Rest
0 Rest
1 Rest
0 Rest
1 Rest
Apfelthaler Kathrin, Dezember 2006
→1
→0
→1
Gleitpunktdarstellung
Codierung
172 : 2 = 86
86 : 2 = 43
43 : 2 = 21
21 : 2 = 10
10 : 2 = 5
5:2=2
2:2=1
1:2=0
(-172.625)10=(10101100.101)2
Apfelthaler Kathrin, Dezember 2006
Gleitpunktdarstellung
Codierung
Schritt 3: Exponent berechnen
Exponent = Exzess + Exponent der
normalisierten Darstellung
Exponent = 127 + 7 = 134
0111 1111 = (127)10
0000 0111 = (7) 10
1000 0110 = (134)10
Apfelthaler Kathrin, Dezember 2006
Apfelthaler Kathrin, Dezember 2006
5
Gleitpunktdarstellung
Codierung
Schritt 4: Vorzeichenbit
Positive Zahlen: MSB = 0
Negative Zahlen: MSB = 1
(-137,625)10 → MSB = 1
Gleitpunktdarstellung
Codierung
Codierung von (-172,625)10 =
(-10101100,101)2
VZ = 1
Exponent = 1000 0110
Mantisse = 1.0101100101
VZ Exponent Mantisse
1 1000 0110 01011001010000000000000
Apfelthaler Kathrin, Dezember 2006
Guard, Round, Sticky Bit
Hilfestellen, um eventuelle numerische
Ungenauigkeiten beim Runden gering
zu halten
Sticky Bit bleibt „1“, sobald es einmal
den Wert „1“ hat
Apfelthaler Kathrin, Dezember 2006
Guard, Round, Sticky Bit
G
R
S
Ergebnis
0
x
x
unverändert
1
1
x
Ergebnis +=1
1
0
0
1
0
1
lsb=0: unverändert
lsb=1: Ergebnis +=1
VZ gleich: Ergebnis +=1
VZ unterschiedl.:unverändert
Apfelthaler Kathrin, Dezember 2006
Gleitpunktarithmetik
Addition / Subtraktion
Schritt 1: Exponenten der betragsmäßig
kleineren Zahl an den Exponenten der
größeren Zahl angleichen
Schritt 2: Die beiden Mantissen addieren
Schritt 3: Die Summe normalisieren
Schritt 4: Runden
Apfelthaler Kathrin, Dezember 2006
Apfelthaler Kathrin, Dezember 2006
Gleitpunktarithmetik Bsp
Zahl A: (5.52)10, Zahl B: (62.52)10,
Zahl C: (58.56)10
Gesucht: A + B, B - C
Apfelthaler Kathrin, Dezember 2006
6
Gleitpunktarithmetik Bsp
Zahl A: (5.52)10
5:2=2
2:2=1
1:2=0
1 Rest
0 Rest
1 Rest
• (101)2 = (5)10
Gleitpunktarithmetik Bsp
Zahl A: (5.52)10
Mantisse = 10 Stellen
Vorkommastellen = 3
Nachkommastellen → 7
0.52 * 2 = 1.04
0.04 * 2 = 0.08
0.08 * 2 = 0.16
0.16 * 2 = 0.32
0.32 * 2 = 0.64
0.64 * 2 = 1.28
0.28 * 2 = 0.56
• (101.1000010)2 = (5.52)10
Apfelthaler Kathrin, Dezember 2006
Gleitpunktarithmetik Bsp
Zahl B: (62.52)10
62 : 2 = 31
31 : 2 = 15
15 : 2 = 7
7:2=3
3:2=1
1:2=0
0 Rest
1 Rest
1 Rest
1 Rest
1 Rest
1 Rest
• (111110)2 = (62)10
Apfelthaler Kathrin, Dezember 2006
Gleitpunktarithmetik Bsp
Zahl
Zahl C: (58.56)10
58 : 2 = 29
29 : 2 = 14
14 : 2 = 7
7:2=3
3:2=1
1:2=0
0 Rest
1 Rest
0 Rest
1 Rest
1 Rest
1 Rest
• (111010)2 = (58)10
Mantisse = 10 Stellen
Vorkommastellen = 6
Nachkommastellen → 4
Apfelthaler Kathrin, Dezember 2006
→1
→0
→0
→0
• (111110.1000)2 = (62.52)10
Apfelthaler Kathrin, Dezember 2006
B: (62.52)10
0.52 * 2 = 1.04
0.04 * 2 = 0.08
0.08 * 2 = 0.16
0.16 * 2 = 0.32
Mantisse = 10 Stellen
Vorkommastellen = 6
Nachkommastellen → 4
Gleitpunktarithmetik Bsp
→1
→0
→0
→0
→0
→1
→0
Apfelthaler Kathrin, Dezember 2006
Gleitpunktarithmetik Bsp
Zahl
C: (58.56)10
0.56 * 2 = 1.12
0.12 * 2 = 0.24
0.24 * 2 = 0.48
0.48 * 2 = 0.96
→1
→0
→0
→0
• (111010.1000)2 = (58.56)10
Apfelthaler Kathrin, Dezember 2006
7
Gleitpunktarithmetik Bsp
NORMIERUNG
• 101.1000010 * 20 =
0.1011000010 * 23
• 111110.1000 * 20 =
0.1111101000 * 26
Gleitpunktarithmetik Bsp
• EXPONENT: Exzess + Exponent
der normalisierten Darstellung
• (16) 10000 (16) 10000
(3) 00011 (6) 00110
10011
10110
• 111010.1000 * 20 =
0.1110101000 * 26
Apfelthaler Kathrin, Dezember 2006
Gleitpunktarithmetik Bsp
• EXPONENT: (2.Weg)
(3) 00011 (6) 00110
10011
10110
1.Bit („1“)= Vorzeichen des
Exponenten (1: positiv, 0:
negativ), Rest= Betrag der Zahl
Apfelthaler Kathrin, Dezember 2006
Gleitpunktarithmetik Bsp
• VORZEICHENBIT setzten:
• Positiv → MSB = 0
Apfelthaler Kathrin, Dezember 2006
Gleitpunktarithmetik Bsp
A = 5.52 =
B = 62.52 =
C = 58.56 =
0 10011 1011000010
0 10110 1111101000
0 10110 1110101000
Apfelthaler Kathrin, Dezember 2006
Apfelthaler Kathrin, Dezember 2006
Gleitpunktarithmetik Bsp
Addition / Anpassung der Exponenten
A = 0 10011 1011000010
(3)
B = 0 10110 1111101000
(6)
Differenz der Exponenten = 6-3= 3
Exponent zur größeren Zahl anpassen
Mantisse der kleineren Zahl anpassen
Apfelthaler Kathrin, Dezember 2006
8
Gleitpunktarithmetik Bsp
ADDITION
Gleitpunktarithmetik Bsp
g r s
A = 0 10110 0001011000 0 1 0
B = 0 10110 1111101000
0 10110 10001000000 0 1 0
Ergebnis normieren
0 10111 1000100000 0 0 1
Nach Normalisierung
(6)
(6)
Apfelthaler Kathrin, Dezember 2006
Apfelthaler Kathrin, Dezember 2006
Gleitpunktarithmetik Bsp
Subtraktion /Anpassung der Exponenten
B = 0 10110 1111101000
(6)
C = 0 10110 1110101000
(6)
g r s
0 10111 1000100000 0 0 1
Tabelle: Fall 1: g=0
Ergebnis unverändert
Gleitpunktarithmetik Bsp
Exponenten bereits angepasst
Apfelthaler Kathrin, Dezember 2006
Subtraktion
B = 0 10110 1111101000 0 0 0
C = 0 10110 1110101000 0 0 0
0 10110 0001000000 0 0 0
Ergebnis normieren
0 10011 1000000000 0 0 0
Apfelthaler Kathrin, Dezember 2006
Gleitpunktarithmetik Bsp
Nach Normalisierung
g r s
0 10011 1000000000 0 0 0
Tabelle: Fall 1: g=0
Danke für die
Aufmerksamkeit!
Ergebnis unverändert
Apfelthaler Kathrin, Dezember 2006
9
Herunterladen