Binäre Gleitkommazahlen
Was ist die wissenschaftliche, normalisierte Darstellung der binären Gleitkommazahl zur dezimalen Gleitkommazahl 0,625?
Betrachte die recht harmlose Dezimalzahl 0 8
Nebenbemerkung
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.
N‐Bit Darstellung von Gleitkommazahlen
Normalisierte, wissenschaftliche Darstellung zur Basis 2. Beispiel:
Allgemein:
Allgemein:
Sign‐and‐Magnitude‐Darstellung für beispielsweise 32 Bits:
s exponent fraction
1 Bit 8 Bits 23 Bits
(s=0 für „+“ und s=1 für „‐“)
Tradeoff:
Viele Fraction‐Bits: hohe Genauigkeit der Fraction
1 Bit 8 Bits 23 Bits
g
Viele Exponent‐Bits: großer darstellbarer Zahlenbereich
Beispiel
s exponent fraction
Was ist der Dezimalwert x des folgenden Bit‐Strings?
1 Bit 8 Bits 23 Bits
Was ist der Dezimalwert x des folgenden Bit Strings?
100000101101100000000000000000000
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 darstellbar zu sein) (Exponent ist zu groß um im Exponent Feld darstellbar zu sein)
Underflow: Zahl zu klein
(Negativer Exponent ist zu groß um im Exponent‐Feld darstellbar zu sein)
Double‐ und Single‐Precision
Beispiel:
f i
Insgesamt 32 Bits Single‐
s exponent fraction
1 Bit 8 Bits 23 Bits
Insgesamt 64 Bits Single‐
Precision
s exponent fraction
1 Bit 11 Bits 52 Bits
Insgesamt 64 Bits Double‐
Precision
Double‐Precision hat höhere Genauigkeit der Fraction und mit
öß E t h i öß d t llb
größerem Exponent auch einen größeren darstellbaren Zahlenbereich.
Double‐Precision in diesem Beispiel:
Kleinste darstellbare Zahl annähernd 2,0 · 10‐308 Größte darstellbare Zahl annähernd 2,0 · 10308
Der Zahlenformatstandard IEEE 754
Insgesamt 32 Bits
s exponent fraction
1 Bit 8 Bits 23 Bits
Insgesamt 32 Bits Single‐
Precision
I t 64 Bit
s exponent fraction
1 Bit 11 Bits 52 Bits
Insgesamt 64 Bits Double‐
Precision
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.
Somit: Bei IEEE 754 wird die „1“ implizit angenommen und in „ p g
„fraction“ nicht codiert. „fraction“ speichert nur Nachkommastellen.
Beispiel
s exponent fraction
1 Bit 8 Bits 23 Bits
Es sei die „1“ vor dem Komma implizit angenommen. „Fraction“
1 Bit 8 Bits 23 Bits
speichere damit nur die Nachkommastellen. Was ist der Dezimalwert x des folgenden Bit‐Strings?
1000001010110000000000000000000
Weitere Eigenschaften von IEEE 754
Unterscheidung von „Fraction“ und „1+Fraction“ in der Darstellung ( 1)S (1 + Fraction) 2Exponent
(‐1)S · (1 + Fraction) · 2Exponent
1+Fraction wird als Significant (deutsch: Mantisse) bezeichnet.
1+Fraction wird als Significant (deutsch: Mantisse) bezeichnet.
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?
Zahlen?
Zahl 1: 000000111101000100000000000000000 Zahl 2: 011010111010010000010000000000000 Zahl 2: 011010111010010000010000000000000
1. Vergleiche erst mal die Vorzeichenbits. Bei unterschiedlichen V i h bit i t d V l i h b d t
Vorzeichenbits ist der Vergleich beendet.
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.
Darstellung des Exponenten in Biased‐Notation
E i Bi d N i (hi i 8 Bi d Bi 127)
Erinnerung: Biased‐Notation (hier mit 8‐Bit und Bias 127):
0000 0000 = -127 (0-Bias = -127) 0000 0001 = -126 (1-Bias = -126)
...
0111 1110 = -1 (126-Bias = -1)( ) 0111 1111 = 0 (127-Bias = 0) 1000 0000 = 1 (128-Bias = 1)
...
1111 1110 = 127 (254-Bias = 127) 1111 1111 = 128 (255-Bias = 128)
Zusammengefasst: Der Wert x einer Zahl in IEEE 754 Darstellung ist
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 Beliebig 1 bis 2046 Beliebig +/‐ Gleitkommazahl 1 bis 254 Beliebig 1 bis 2046 Beliebig +/ Gleitkommazahl
255 0 2047 0 +/‐ Unendlich
255 Ni ht N ll 2047 Ni ht N ll N N (N t N b ) 255 Nicht‐Null 2047 Nicht‐Null NaN (Not a Number)
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)( ) ( )
Quiiiiz
Bestimme S, Fraction und Exponent der IEEE 754 Single‐Precision Repräsentation (also Bias = 127) der Dezimalzahl ‐0.75.
( 1)
S(1 + Fraction) 2
(Exponent—Bias)(‐1)
S· (1 + Fraction) · 2
(Exponent Bias)Gleitkommaarithmetik
Gleitkommaarithmetik
Additi bi ä Bit Gl itk hl
Addition von binären n‐Bit Gleitkommazahlen
Vorüberlegung
Addition mit gleichem Exponent (Nachkomma mit 4 Bits kodiert):
Addition mit unterschiedlichen Exponenten (Nachkomma 4 Bits):
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“
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:
Additionsalgorithmus
2 Beispiele: 4 Bit für die Mantisse
und 8 Bit für den Exponenten. Start
(1) Vergleiche Exponenten der beiden Zahlen Shifte die Beispiel 1 Beispiel 2
1,000 · 2‐1 1 110 2 2
1,001 · 210
1 101 211 der beiden Zahlen. Shifte die kleinere Zahl nach rechts, so
dass der Exponent mit dem
‐ 1,110 · 2‐2 + 1,101 · 211 (1)
Exponent der größeren Zahl übereinstimmt. (Mantissen‐
Ali t)
Alignment) (2)
(2) Addiere die Mantissen.
Additionsalgorithmus
2 Beispiele: 4 Bit für die Mantisse
und 8 Bit für den Exponenten. (3) Normalisiere die Summe,(3) Normalisiere die Summe, entweder durch Rechts‐Shift
und hoch setzen oder durch Beispiel 1 Beispiel 2
(2) 0,001 · 2‐1 10,001 · 211
Links‐Shift und runter setzen des Exponenten.
(2) 0,001 2 10,001 2 (3)
Im Beispiel 8‐Bit für den Exponenten.
Overflow oder
Underflow? ja
E ti “
nein „Exception“
Additionsalgorithmus
zurücknach (3) 2 Beispiele: 4 Bit für die Mantisse
und 8 Bit für den Exponenten.
( )
(4) Runde die Mantisse auf die verfügbare Anzahl Bits.
Beispiel 1 Beispiel 2
(3) 1 000 2‐4 1 0001 212 (3) 1,000 · 2 1,0001 · 2 (4)
Immer noch
li i ? i
normalisiert?
j
nein
Fertig ja Fertig
Noch eine Bemerkung
h d f l d b l
Betrachte die folgende binäre Floats mit 8‐Bit Mantisse:
x = −1 100 000 · 2100 y = 1 100 000 · 2100 z = 1 000 0000
x = 1,100 000 · 2 , y = 1,100 000 · 2 , z = 1,000 0000 Was ist x + (y + z)?(y )
Was ist (x + y) + z?
S it i t + ( + ) ≠ ( + ) + d h di Gl itk dditi i t Somit ist x + (y + z) ≠ (x + y) + z, d.h. die Gleitkommaaddition ist nicht assoziativ!
Quiz: Was ist die Konsequenz, wenn man x1 + x2 + ... + x parallel Quiz: Was ist die Konsequenz, wenn man x1 + x2 + ... + xn parallel berechnen möchte?
Gleitkommaarithmetik
M lti lik ti bi ä Bit Gl itk hl Multiplikation von binären n‐Bit Gleitkommazahlen
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?
Algorithmus
Beispiel: 4 Bit für die Mantisse und 8 Bit für den Exponenten.
Start
1 2 Start
1,101 · 2‐1 · ‐1,100 · 2‐2
(1)
(1) Addiere die Exponenten.
(S bt hi Bi i F ll (Subtrahiere Bias im Falle
von Biased‐Notation )
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
(2) Multipliziere die 1,101 und 1,100
(2)
(2) Multipliziere die Mantissen.
Algorithmus
Beispiel: 4 Bit für die Mantisse
und 8 Bit für den Exponenten. (3) Normalisiere das Produkt(3) Normalisiere das Produkt Falls notwendig.
Normalisierung erfolgt durch (2) 10,011100 · 2‐3
(3) Rechts‐Shift und erhöhen
des Exponenten.
(3)
Im Beispiel 8‐Bit für den Exponenten.
Overflow oder
Underflow? ja
E ti “
nein „Exception“
Algorithmus
zurücknach (3)Beispiel: 4 Bit für die Mantisse und 8 Bit für den Exponenten.
1 2
(4) Runde die Mantisse auf die verfügbare Anzahl Bits (Eingabe: 1,101 · 2‐1 · ‐1,100 · 2‐2) die verfügbare Anzahl Bits.
(3) 1,0011100 · 2‐2
Immer noch
normalisiert? nein (3) 1,0011100 2
(4)
ja
(5) Setze Vorzeichen auf +“
(5)
(5) Setze Vorzeichen auf „+
wenn die Vorzeichen der Eingaben gleich waren. Sonst g g
setze Vorzeichen auf „‐“.
Fertig