02 Binäre Arithmetik (VL07)
Transcription
02 Binäre Arithmetik (VL07)
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 8 Bits 23 Bits Tradeoff: Viele Fraction‐Bits: hohe Genauigkeit der Fraction Viele Exponent‐Bits: großer darstellbarer Zahlenbereich Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 97 Beispiel s exponent fraction 1 Bit 8 Bits 23 Bits Was ist der Dezimalwert x des folgenden Bit‐Strings? 100000101101100000000000000000000 Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 98 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) Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 99 Double‐ und Single‐Precision Beispiel: Single‐ Precision Double‐ Precision Insgesamt 32 Bits s exponent 1 Bit 8 Bits fraction 23 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 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 100 Der Zahlenformatstandard IEEE 754 Single‐ Precision Double‐ Precision Insgesamt 32 Bits s exponent 1 Bit 8 Bits fraction 23 Bits Insgesamt 64 Bits 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. Somit: Bei IEEE 754 wird die „1“ implizit angenommen und in „fraction“ nicht codiert. „fraction“ speichert nur Nachkommastellen. Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 101 Beispiel s exponent fraction 1 Bit 8 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 102 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. Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 103 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. Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 104 Darstellung des Exponenten in Biased‐Notation Erinnerung: Biased‐Notation (hier mit 8‐Bit und Bias 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 105 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) Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 106 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 107 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) Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 108 Gleitkommaarithmetik Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 109 Gleitkommaarithmetik Addition von binären n‐Bit Gleitkommazahlen Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 110 Vorüberlegung Addition mit gleichem Exponent (Nachkomma mit 4 Bits kodiert): Addition mit unterschiedlichen Exponenten (Nachkomma 4 Bits): Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 111 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 112 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 113 Additionsalgorithmus 2 Beispiele: 4 Bit für die Mantisse und 8 Bit für den Exponenten. Beispiel 1 1,000 * 2‐1 ‐ 1,110 * 2‐2 (1) Start Beispiel 2 1,001 * 210 + 1,101 * 211 (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) (2) Addiere die Mantissen. Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 114 Additionsalgorithmus 2 Beispiele: 4 Bit für die Mantisse und 8 Bit für den Exponenten. Beispiel 1 (2) (3) 0,001 * 2‐1 Beispiel 2 10,001 * 211 (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“ 115 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 Beispiel 2 1,0001 * 212 (4) Runde die Mantisse auf die verfügbare Anzahl Bits. (4) Immer noch normalisiert? nein ja Fertig Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 116 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? Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 117 Gleitkommaarithmetik Multiplikation von binären n‐Bit Gleitkommazahlen Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 118 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? Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 119 Algorithmus Beispiel: 4 Bit für die Mantisse und 8 Bit für den Exponenten. Start 1,101 * 2‐1 ¢ ‐1,100 * 2‐2 (1) (1) Addiere die Exponenten. (Subtrahiere Bias im Falle von Biased‐Notation ) Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 120 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) (2) Multipliziere die Mantissen. Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 121 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 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“ 122 zurück nach (3) Algorithmus Beispiel: 4 Bit für die Mantisse und 8 Bit für den Exponenten. (Eingabe: 1,101 * 2‐1 ¢ ‐1,100 * 2‐2) (3) (4) 1,0011100 * 2‐2 (4) Runde die Mantisse auf die verfügbare Anzahl Bits. Immer noch normalisiert? nein ja (5) (5) Setze Vorzeichen auf „+“ wenn die Vorzeichen der Eingaben gleich waren. Sonst setze Vorzeichen auf „‐“. Fertig Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 123