02 Bin„re Arithmetik (VL05)

Werbung
Binäre Gleitkommazahlen
Was ist die wissenschaftliche, normalisierte Darstellung der binären Gleitkommazahl zur dezimalen Gleitkommazahl 0,625?
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
72
Nebenbemerkung
Betrachte die recht harmlose Dezimalzahl 0 8
Betrachte die recht harmlose Dezimalzahl 0,8.
Für die folgende unendliche Reihe rechnet man leicht nach:
Für
die folgende unendliche Reihe rechnet man leicht nach:
(2‐1 + 2‐2) + (2‐5 + 2‐6) + (2‐9 + 2‐10) + (2‐13 + 2‐14) + ... = 4/5 = 0.8
Folglich ist die Binärdarstellung von 0.8 unendlich lang, nämlich:
0 , 1100 1100 1100 1100 1100 1100 1100 ...
Annahme wir speichern nur die ersten 32 Bits. Rechnet man in den Dezimalwert x zurück, dann ergibt sich:
e a e t u üc , da e g bt s c
x = (2‐1 + 2‐2) + (2‐5 + 2‐6) + (2‐9 + 2‐10) + ... + (2‐29 + 2‐30)
= 858.993.459 / 1.073.741.824 = 0,79999999981373548508 ≠ 0,8
Oha, 0,8 ist scheinbar doch nicht so harmlos. Es gibt folglich Zahlen mit endlicher dezimaler Gleitkommadarstellung die binär nicht mit
mit endlicher dezimaler Gleitkommadarstellung, die binär nicht mit endlicher Anzahl Bits darstellbar sind.
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
73
N‐Bit Darstellung von Gleitkommazahlen
Normalisierte, wissenschaftliche Darstellung zur Basis 2. Beispiel:
Allgemein:
Sign‐and‐Magnitude‐Darstellung für beispielsweise 32 Bits:
(s=0 für „+“ und s=1 für „‐“)
s
exponent
fraction
1 Bit
1 Bit
8 Bits
8 Bits
23 Bits
23 Bits
Tradeoff:
Viele Fraction‐Bits: hohe Genauigkeit der Fraction
g
Viele Exponent‐Bits: großer darstellbarer Zahlenbereich
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
74
Beispiel
s
exponent
fraction
1 Bit
8 Bits
23 Bits
Was ist der Dezimalwert x des folgenden Bit
Was ist der Dezimalwert x
des folgenden Bit‐Strings?
Strings?
100000101101100000000000000000000
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
75
Wertebereiche, Overflow und Underflow
s
exponent
fraction
1 Bit
8 Bits
23 Bits
Kleinste darstellbare Zahl annähernd 2,0 · 10‐38
Größte darstellbare Zahl annähernd 2,0 · 1038
Was, wenn die darzustellende Zahl außerhalb dieses Bereichs ist?
Overflow: Zahl zu groß
(Exponent ist zu groß um im Exponent‐Feld
(Exponent ist zu groß um im Exponent
Feld darstellbar zu sein)
darstellbar zu sein)
Underflow: Zahl zu klein
(Negativer Exponent ist zu groß um im Exponent‐Feld darstellbar zu sein)
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
76
Double‐ und Single‐Precision
Beispiel:
Single‐
Precision
Double‐
Precision
Insgesamt 32 Bits
s exponent
1 Bit
8 Bits
f
fraction
i
23 Bits
Insgesamt 64 Bits
Insgesamt 64 Bits
s
exponent
1 Bit
11 Bits
fraction
52 Bits
Double‐Precision hat höhere Genauigkeit der Fraction und mit größerem Exponent auch einen größeren darstellbaren öß
E
t
h i
öß
d t llb
Zahlenbereich.
Double‐Precision in diesem Beispiel:
Kleinste darstellbare Zahl annähernd 2,0 · 10‐308
Größte darstellbare Zahl annähernd 2,0 · 10308
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
77
Der Zahlenformatstandard IEEE 754
Single‐
Precision
Double‐
Precision
Insgesamt 32 Bits
Insgesamt 32 Bits
s exponent
1 Bit
8 Bits
fraction
23 Bits
I
Insgesamt 64 Bits
t 64 Bit
s
exponent
1 Bit
11 Bits
fraction
52 Bits
Bit‐Aufteilungen in dieser Form sind in IEEE 754 spezifiziert.
Betrachte die wissenschaftliche, normalisierte Darstellung:
[+ oder ‐] 1,xxxxxxxx · 2yyyy
Beobachtung: die 1“ vor dem Komma ist redundant.
Beobachtung: die „1
vor dem Komma ist redundant
„
p
g
Somit: Bei IEEE 754 wird die „1“ implizit angenommen und in „fraction“ nicht codiert. „fraction“ speichert nur Nachkommastellen.
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
78
Beispiel
s
exponent
fraction
1 Bit
1 Bit
8 Bits
8 Bits
23 Bits
23 Bits
Es sei die „1“ vor dem Komma implizit angenommen. „Fraction“ speichere damit nur die Nachkommastellen. Was ist der Dezimalwert x des folgenden Bit‐Strings?
1000001010110000000000000000000
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
79
Weitere Eigenschaften von IEEE 754
Unterscheidung von „Fraction“ und „1+Fraction“ in der Darstellung
((‐1)
1)S · (1 + Fraction) ·
(1 + Fraction) 2Exponent
1+Fraction wird als Significant (deutsch: Mantisse) bezeichnet.
1+Fraction wird als Significant
(deutsch: Mantisse) bezeichnet.
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
80
Motivation für eine geeignete Exponent‐Darstellung
Annahme: Exponent wäre mit Zweierkomplement dargestellt. Wie macht man einen Größer‐Kleiner‐Vergleich der folgenden beiden Zahlen?
Zahl 1: 000000111101000100000000000000000
Zahl 2: 011010111010010000010000000000000
Zahl 2:
1. Vergleiche erst mal die Vorzeichenbits. Bei unterschiedlichen V
Vorzeichenbits ist der Vergleich beendet.
i h bit i t d V l i h b
d t
2. Vergleiche die Exponenten. Ist einer größer als der andere, ist der Vergleich beendet (Signed‐Vergleich)
der Vergleich beendet. (Signed
Vergleich)
3. Vergleiche die Fractions. (Unsigned‐Vergleich)
Kann man Schritt 2 und 3 in einem durchführen? Kleinster Exponent müsste 00000000 und größter Exponent müsste 11111111 sein dann könnte man Exponent und Fraction für einen Vergleich einfach sein, dann könnte man Exponent und Fraction
für einen Vergleich einfach
konkatenieren.
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
81
Darstellung des Exponenten in Biased‐Notation
Ei
Erinnerung: Biased‐Notation (hier mit 8‐Bit und Bias 127):
Bi d N
i (hi
i 8 Bi
d Bi 127)
0000 0000 =
0000 0001 =
...
0111 1110 =
0111 1111 =
1000 0000 =
...
1111 1110 =
1111 1111 =
-127
-126
(0-Bias = -127)
(1-Bias = -126)
-1
0
1
(
(126-Bias
= -1)
)
(127-Bias = 0)
(128-Bias = 1)
127
128
(254-Bias = 127)
(255-Bias = 128)
Zusammengefasst: Der Wert x einer Zahl in IEEE 754 Darstellung ist
(Single‐Precision (8‐Bit‐Exponent) Bias=127, Double‐Precision (11‐Bit‐Exponen) Bias=1023)
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
82
IEEE 754 Encoding
Wie stellt man im IEEE 754 Format eigentlich die „0“ dar!?
(‐1)S · (1 + Fraction) · 2(Exponent—Bias)
Single‐Precision (Bias=127)
Double‐Precision (Bias=1023)
Dargestelltes Objekt
Exponent
Fraction
Exponent
Fraction
0
0
0
0
0
0
Nicht‐Null
0
Nicht‐Null
(+/‐ Denormalised Number)
1 bis 254
bis 254
Beliebig
1 bis 2046
1 bis 2046
Beliebig
+/‐ Gleitkommazahl
+/
255
0
2047
0
+/‐ Unendlich
255
Ni ht N ll
Nicht‐Null
2047
Ni ht N ll
Nicht‐Null
N N (Not a Number)
NaN
(N t N b )
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
83
Quiz
Betrachte IEEE 754 Single‐Precision, also Bias = 127. Was ist der Dezimalwert der folgenden Binärzahl?
010000000110000000000000000000000
((‐1))S · ((1 + Fraction) ·
) 2(Exponent—Bias)
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
84
Quiiiiz
Bestimme S, Fraction und Exponent der IEEE 754 Single‐Precision Repräsentation (also Bias = 127) der Dezimalzahl ‐0.75.
(Exponent—Bias)
Bias)
((‐1)
1)S · (1 + Fraction) ·
(1 + Fraction) 2(Exponent
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
85
Gleitkommaarithmetik
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
86
Gleitkommaarithmetik
Additi
Addition von binären n‐Bit Gleitkommazahlen
bi ä
Bit Gl itk
hl
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
87
Vorüberlegung
Addition mit gleichem Exponent (Nachkomma mit 4 Bits kodiert):
Addition mit unterschiedlichen Exponenten (Nachkomma 4 Bits):
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
88
Vorüberlegung
Ergebnis muss unter Umständen wieder normalisiert werden:
Bei Einschränkung auf n Bit (z.B. Nachkomma auf 4 Bit einge‐
schränkt) kann dies anschließendes Auf‐ bzw. Abrunden erfordern.
Beispiel: Runden nach der „Schulmethode“
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
89
Vorüberlegung
Das Runden kann ggf. neues Normalisieren erforderlich machen:
Normalisierungen können Overflows und Underflows hervorrufen.
Beispiel: IEEE 754 Single‐Precision erlaubt Exponenten von ‐126 bis 127. Somit ist zum Beispiel:
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
90
Additionsalgorithmus
2 Beispiele: 4 Bit für die Mantisse und 8 Bit für den Exponenten.
Beispiel 1
1,000 · 2‐1
‐ 1,110 ·
1 110 2‐22
(1)
Beispiel 2
1,001 · 210
+ 1,101 ·
1 101 211
Start
(1) Vergleiche Exponenten der beiden Zahlen Shifte die der beiden Zahlen. Shifte
die
kleinere Zahl nach rechts, so dass der Exponent mit dem Exponent der größeren Zahl übereinstimmt. (Mantissen‐
Ali
Alignment)
t)
(2)
(2) Addiere die Mantissen.
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
91
Additionsalgorithmus
2 Beispiele: 4 Bit für die Mantisse und 8 Bit für den Exponenten.
Beispiel 1 Beispiel 2
0,001 · 2‐1 10,001 10,001 · 211
(2) 0,001 (3)
(3) Normalisiere die Summe, (3)
Normalisiere die Summe,
entweder durch Rechts‐Shift
und hoch setzen oder durch Links‐Shift und runter setzen des Exponenten.
Im Beispiel 8‐Bit für
den Exponenten.
Overflow oder Underflow?
nein
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
ja
„Exception“
E
ti “
92
Additionsalgorithmus
zurück
nach (3)
( )
2 Beispiele: 4 Bit für die Mantisse und 8 Bit für den Exponenten.
Beispiel 1
(3)
1 000 2‐4
1,000 ·
Beispiel 2
1 0001 212
1,0001 ·
(4) Runde die Mantisse auf die verfügbare Anzahl Bits.
(4)
Immer noch normalisiert?
li i ?
nein
i
j
ja
Fertig
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
93
Noch eine Bemerkung
Betrachte die folgende binäre Floats
h d f l d b
l
mit 8‐Bit Mantisse: x = −1
x = 1,100 000 ·
100 000 · 2100, y = 1,100 000 ·
y = 1 100 000 · 2100 , z = 1,000 0000
z = 1 000 0000
Was ist x + (y + z)?
(y )
Was ist (x + y) + z?
SSomit ist x + (y + z) ≠ (x + y) + z, d.h. die Gleitkommaaddition ist it i t + ( + ) ≠ ( + ) + d h di Gl itk
dditi i t
nicht assoziativ!
Quiz: Was ist die Konsequenz, wenn man x1 + x
Quiz: Was ist die Konsequenz, wenn man x
+ x2 + ... + x
+ ... + xn parallel parallel
berechnen möchte?
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
94
Gleitkommaarithmetik
M lti lik ti
Multiplikation von binären n‐Bit Gleitkommazahlen
bi ä
Bit Gl itk
hl
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
95
Vorüberlegung
Multiplikation von zwei beliebigen binären Floats in normalisierter Darstellung. Was ist der Exponent des Ergebnisses?
Multiplikation der Mantissen Wo kommt das Komma hin?
Multiplikation der Mantissen. Wo kommt das Komma hin?
Was ist das Vorzeichen v von x · y?
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
96
Algorithmus
Beispiel: 4 Bit für die Mantisse und 8 Bit für den Exponenten.
Start
1,101 · 2‐11 · ‐1,100 · 2‐22
(1)
(1) Addiere die Exponenten. (S bt hi
(Subtrahiere Bias im Falle Bi i F ll
von Biased‐Notation )
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
97
Algorithmus
Beispiel: 4 Bit für die Mantisse und 8 Bit für den Exponenten.
(1) Der Exponent ist ‐3
Die Mantissen sind:
1 101 und 1,100
1,101
und 1 100
(2)
(2) Multipliziere die (2)
Multipliziere die
Mantissen.
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
98
Algorithmus
Beispiel: 4 Bit für die Mantisse und 8 Bit für den Exponenten.
(2)
(3)
10,011100 · 2‐3
(3) Normalisiere das Produkt (3)
Normalisiere das Produkt
Falls notwendig. Normalisierung erfolgt durch Rechts‐Shift und erhöhen des Exponenten.
Im Beispiel 8‐Bit für
den Exponenten.
Overflow oder Underflow?
nein
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
ja
„Exception“
E
ti “
99
zurück
nach (3)
Algorithmus
Beispiel: 4 Bit für die Mantisse und 8 Bit für den Exponenten.
(Eingabe: 1,101 · 2‐11 · ‐1,100 · 2‐22)
(3)
(4)
1,0011100 · 2‐2
1,0011100 (4) Runde die Mantisse auf die verfügbare Anzahl Bits
die verfügbare Anzahl Bits.
Immer noch normalisiert?
nein
ja
(5)
(5) Setze Vorzeichen auf „+
(5)
Setze Vorzeichen auf +“ wenn die Vorzeichen der Eingaben gleich waren. Sonst g
g
setze Vorzeichen auf „‐“.
Fertig
Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik
100
Herunterladen