• Keine Ergebnisse gefunden

Double‐ und Single‐Precision

N/A
N/A
Protected

Academic year: 2022

Aktie "Double‐ und Single‐Precision"

Copied!
27
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

N‐Bit Darstellung von Gleitkommazahlen

Normalisierte, wissenschaftliche Darstellung zur Basis 2. Beispiel:

Allgemein:

Sign‐and‐Magnitude‐Darstellung für beispielsweise 32 Bits:

Tradeoff:

Viele Fraction‐Bits: hohe Genauigkeit der Fraction

Viele Exponent‐Bits: großer darstellbarer Zahlenbereich

s exponent fraction

1 Bit 8 Bits 23 Bits

(s=0 für „+“ und s=1 für „‐“)

(2)

Beispiel

Was ist der Dezimalwert x des folgenden Bit‐Strings?

100000101101100000000000000000000

s exponent fraction

1 Bit 8 Bits 23 Bits

(3)

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) Underflow: Zahl zu klein

(Negativer Exponent ist zu groß um im Exponent‐Feld darstellbar zu  sein)

(4)

Beispiel:

Double‐Precision hat höhere Genauigkeit der Fraction und mit  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

Double‐ und Single‐Precision

s exponent fraction

1 Bit 8 Bits 23 Bits

s exponent fraction

1 Bit 11 Bits 52 Bits

Insgesamt 32 Bits

Insgesamt 64 Bits Single‐

Precision

Double‐

Precision

(5)

Der Zahlenformatstandard IEEE 754

s exponent fraction

1 Bit 8 Bits 23 Bits

Insgesamt 32 Bits Single‐

Precision

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.

Somit: Bei IEEE 754 wird die „1“ implizit angenommen und in 

„fraction“ nicht codiert. „fraction“ speichert nur Nachkommastellen.

(6)

Beispiel

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

s exponent fraction

1 Bit 8 Bits 23 Bits

(7)

Weitere Eigenschaften von IEEE 754

Unterscheidung von „Fraction“ und „1+Fraction“ in der Darstellung (‐1)S * (1 + Fraction) * 2Exponent

1+Fraction wird als Significant (deutsch: Mantisse) bezeichnet.

(8)

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

1. Vergleiche erst mal die Vorzeichenbits. Bei unterschiedlichen  Vorzeichenbits ist der Vergleich beendet.

2. Vergleiche die Exponenten. Ist einer größer als der andere, ist  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 

konkatenieren.

(9)

Darstellung des Exponenten in Biased‐Notation

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

(Single‐Precision (8‐Bit‐Exponent) Bias=127, Double‐Precision (11‐Bit‐Exponen) Bias=1023)

(10)

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

255 0 2047 0 +/‐ Unendlich

255 Nicht‐Null 2047 Nicht‐Null NaN (Not a Number)

(11)

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)

(12)

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)

(13)

Gleitkommaarithmetik

(14)

Gleitkommaarithmetik

Addition von binären n‐Bit Gleitkommazahlen

(15)

Vorüberlegung

Addition mit gleichem Exponent (Nachkomma mit 4 Bits kodiert):

Addition mit unterschiedlichen Exponenten (Nachkomma 4 Bits):

(16)

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“

(17)

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:

(18)

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 

kleinere Zahl nach rechts, so  dass der Exponent mit dem  Exponent der größeren Zahl  übereinstimmt. (Mantissen‐

Alignment)

(2) Addiere die Mantissen.

Beispiel 1 Beispiel 2 1,000 * 2‐1

1,110 * 2‐2

1,001 * 210 + 1,101 * 211 (1)

(2)

(19)

Additionsalgorithmus

2 Beispiele: 4 Bit für die Mantisse 

und 8 Bit für den Exponenten. (3) Normalisiere die Summe,  entweder durch Rechts‐Shift

und hoch setzen oder durch  Links‐Shift und runter setzen 

des Exponenten.

„Exception“

Overflow oder 

Underflow? ja nein

Im Beispiel 8‐Bit für den Exponenten.

Beispiel 1 Beispiel 2

(2) 0,001 * 2‐1 10,001 * 211 (3)

(20)

Additionsalgorithmus

2 Beispiele: 4 Bit für die Mantisse  und 8 Bit für den Exponenten.

Fertig

Immer noch  normalisiert?

(4) Runde die Mantisse auf  die verfügbare Anzahl Bits.

ja

nein zurück nach (3)

Beispiel 1 Beispiel 2

(3) 1,000 * 2‐4 1,0001 * 212 (4)

(21)

Noch eine Bemerkung

Betrachte die folgende binäre Floats mit 8‐Bit Mantisse: 

x = −1,100 000 * 2100,     y = 1,100 000 * 2100 , z = 1,000 0000 Was ist x + (y + z)?

Was ist (x + y) + z?

Somit ist x + (y + z) ≠ (x + y) + z, d.h. die Gleitkommaaddition ist  nicht assoziativ!

Quiz: Was ist die Konsequenz, wenn man x1 + x2 + ... + xn parallel  berechnen möchte?

(22)

Gleitkommaarithmetik

Multiplikation von binären n‐Bit Gleitkommazahlen

(23)

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?

Was ist das Vorzeichen v von x ¢ y?

(24)

Algorithmus

Beispiel: 4 Bit für die Mantisse und  8 Bit für den Exponenten.

Start

(1) Addiere die Exponenten. 

(Subtrahiere Bias im Falle  von Biased‐Notation ) 1,101 * 2‐1 ¢ ‐1,100 * 2‐2

(1)

(25)

Algorithmus

Beispiel: 4 Bit für die Mantisse und  8 Bit für den Exponenten.

(2) Multipliziere die  Mantissen.

(1) Der Exponent ist ‐3 Die Mantissen sind:

1,101 und 1,100 (2)

(26)

Algorithmus

Beispiel: 4 Bit für die Mantisse 

und 8 Bit für den Exponenten. (3) Normalisiere das Produkt  Falls notwendig. 

Normalisierung erfolgt durch  Rechts‐Shift und erhöhen 

des Exponenten.

„Exception“

Overflow oder 

Underflow? ja nein

Im Beispiel 8‐Bit für den Exponenten.

(2) 10,011100 * 2‐3 (3)

(27)

Algorithmus

Beispiel: 4 Bit für die Mantisse  und 8 Bit für den Exponenten.

(Eingabe: 1,101 * 2‐1 ¢ ‐1,100 * 2‐2)

Fertig

Immer noch  normalisiert?

(4) Runde die Mantisse auf  die verfügbare Anzahl Bits.

ja

nein zurück nach (3)

(3) 1,0011100 * 2‐2 (4)

(5)

(5) Setze Vorzeichen auf „+“ 

wenn die Vorzeichen der  Eingaben gleich waren. Sonst 

setze Vorzeichen auf „‐“.

Referenzen

ÄHNLICHE DOKUMENTE

Code‐Distanz von d min ¸ 2t+1 kann bis zu 

Es sei t p der Propagation‐Delay und t f die  Transmission‐Time für einen Frame. Die  Gesamtzeit T für n Frames ist:?.

recht gut lesbar, nahezu selbst-dokumentierend, aber Speicher-aufwändig ( die Ziffernfolge „12345678“ benötigt 8 Bytes, die dargestellte Zahl aber nur 3

Seiko Epson does not assume any liability of any kind arising out of any inaccuracies contained in this material or due to its application or use in any product or circuit and,

Seiko Epson does not assume any liability of any kind arising out of any inaccuracies contained in this material or due to its application or use in any product or circuit and,

Input only : 12 bits (EXCL0 or EXCL1 is available by software) Output only : 30 bits (BZ, FOUT and TOUT are available by software) Bidirectional I/O : 26 bits (SRDY, SCLK, SIN and

The specification of the OSC1 oscillation circuit can be selected from among four types: "Crystal oscil- lation", "CR oscillation", "Crystal oscillation

OSC1: Stop, OSC3 = Stop, CPU, ROM, RAM: SLEEP status, Clock timer: Stop, Others: Stop status OSC1: Oscillating, OSC3 = Stop, CPU, ROM, RAM: HALT status, Clock timer: Operating,