Versteht jemand wie wir diese zwei Binärzahlen, mit 1 Bit Vorzeichen, 3 Bits Exponent und 4 Bits für dei Mantisse(fraction) addiert haben? (In Festkomma)?
Hallo. Ich habe eine Aufgabe, wo wir zwei Binärzahlen addieren, aber ich verstehe die Lösung nicht.
Zuvor, ist es so wir haben Binärzahlen gegeben, im Minifloatformat. Bei uns ist der Minifloat so definiert:
- der erste Bit ist das Vorzeichen ist.
- Dann haben wir noch 3 Bits für den Exponenten ( mit Excess-Konstante 3)
- und 4 Bits für die Fraction (Mantisse).
- Zudem arbeiten mit denormalisierter Darstellung, also dass alle Exponentenbits =0 sind und auch mit normalisierter Darstellung, also alle anderen Fälle, wenn die Exponentenbits nicht alle 0 sind.
Jetzt haben wir die beiden Minifloatzahlen:
- 01010011
- 01100100
Diese sollen wir addieren und dann wieder als Minifloat darstellen. Um die zu addieren, werden die beiden Zahlen in Festkommazahlen umgewandelt.
Laut unterlagen haben die Festkommazahlen, die die Minifloats darrstellen können:
- 5 Vorkommastellen (Mit der Fraction=4 und Exponent=4 (normalisiert) )
- 6 Nachkommastellen (Mit der Länge der Fraction)4 und Exponenten=-2)
So ist die Addition, laut Musterlösung:
1. Umwandlung in Festkommazahl:
0 101 0011 = 1.0011 * 22 = 00100.110000
0 110 0100 = 1.0100 * 23= 01010.000000
2. Binär Addieren
00100.110000 + 01010.000000= 01110.110000
3. Komma verschieben:
1.1101100000 * 23 (Was ich hier nicht kapiere, warum verschiebe ich das Komma um 23 und warum habe ich eine 0 drangehängt, ist das vielleicht ein Tippfehler? Habe hier eien Null mehr als bei 01110.110000)
4. Abschneiden der Nachkommastellen und ggf. Runden
1.1101(100000)*23
àaufrunden, da erstes abgeschnittene Bit 1
à1.1110*23
5. Ergebnis: 0 110 1110 (Jetzt hat man hier das Ergebnis irgendwie von der 4, aber verstehe nicht wie)
1 Antwort
Zu 3.: Wenn du das Ergebnis wieder in das Minifloatformat umwandeln willst, musst du die Schritte, die du gemacht hast um eine Festkommazahl zu kriegen, wieder umdrehen. Daher stellst du die Zahl wieder in Exponentialschreibweise (also 1,11011 * 2³) dar. Die zusätzliche 0 war wahrscheinlich wirklich ein Schreibfehler. Der ist aber egal, weil die nachfolgen Nullen nichts am Ergebnis ändern. Bei Zahlen im Zehnersystem ist das ja auch so: 4,5 ist das Gleiche, wie 4,500000 oder wie 000004,5000.
Zu 5: Das Ergebnis ist positiv, also ist die erste Ziffer 0. Dann kommt der Exponent, der ist 3 plus der "Excess-Faktor" von 3 = 6. Das ist binär 110. Dann kommt die Mantisse in normalisierter Darstellung. Das heißt, es wird nur der Teil nach dem Komma aufgeschrieben. Die gerundete Mantisse aus 4 ist 1,1110. Wenn man da die 1 vor dem Komma abschneidet, bleibt 1110 übrig. Zusammengesetzt ist das dann 0 110 1110.
Wenn man das in Dezimalzahlen umrechnet, ist das 4,75 + 10 = 15. Das ist das genaueste, was das Minifloatformat schafft.
Nein, bei der 4 ist das Komma direkt nach der ersten 1. Das Komma wird halt als Punkt aufgeschrieben. Die Klammern bedeuten nur, dass die Mantisse nicht lang genug ist, um die Ziffern in den Klammern zu speichern. Deshalb muss die Mantisse gerundet werden.
Also das Ergebnis ist 1110,11 (dezimal: 14,75). Das wird in Exponentialschreibweise dargestellt: 1,11011 * 2³. Das Minifloatformat erlaubt aber nur 4 Binärziffern in der Mantisse, also 1,1101. Da die erste abgeschnittene Ziffer aber eine 1 ist, muss aufgerundet werden, also 1,1110.
Vielen Dank!
Was ich aber dann nicht kapiere, bei dem 3 Schritt:
1.1101100000 * 23
wenn ich das mal 23 mache, ist das doch das Komma hier:
1110.1100000
aber bei der 4.
ist das komma:
11101,100000 hier, also wird ja durch die Klammern 1.1101(100000) dort dargestellt.