====== Festkommazahlen ====== Wir haben nun eine Darstellung für natürliche und -- mit dem Zweierkomplement -- eine für ganze Zahlen im Binärsystem gefunden. Offen ist die Frage wie man **Brüche/Kommazahlen** im Binärsystem darstellen kann? Eine erste Möglichkeit, bei der alle bisherigen Rechenregeln erhalten bleiben, stellt die Darstellung als Festkommazahl dar. Der größte Vorteil bei dieser Darstellung ist, dass dieselbe ALU((Aritmetic-Logic-Unit, siehe auch https://de.wikipedia.org/wiki/Arithmetisch-logische_Einheit)) des Rechners, die die ganzzahligen Berechnungen durchführt auch mit dieser Darstellung umgehen kann, man benötigt im Prozessor also kein neues Rechenwerk für diese Art der Kommazahlen. ===== Wie funktionierts? ===== Bei der Festkommadarstellung wird im Vorfeld definiert, an welcher Stelle sich das Komma befindet, bzw. wie viele Vorkomma- und wie viele Nachkommastellen die Zahl beinhaltet. Das wird mit der Bezeichnung **Q** angegeben: * Q1: Eine Nachkommastelle * Q2: zwei Nachkommstellen * Q3: drei Nachkommastellen * Q4: Vier Nachkommastellen * Q5: ... Die Wertigkeit hinter der Kommastelle wird entsprechend der 2er-Potenzen fortgeführt. {{ :faecher:informatik:oberstufe:codierung:zahlendarstellungen:festkomma:auswahl_272.png?700 |}} Bei fester Bitlänge der gesamten Zahl wird also mit wachsender Anzahl der Nachkommastellen der Wertebereich vor dem Komma kleiner. ---- {{:aufgabe.png?nolink |}} === (A1) === * Bestimme die dezimalen Werte aller Nachkommastellen bei Q4. * Welche Einschränkung ergibt sich daraus für Zahlen, die in Q2 dargestellt werden können? * Kann man die Zahl 8,3 in Q3 darstellen? * Kannst du eine Regel formulieren, welche Zahlen man in der Festkommadarstellung darstellen kann? Denke daran, dass alle endlichen Dezimalzahlen als Bruch geschrieben werden können. ---- {{:aufgabe.png?nolink |}} === (A2) === Rechne die Zahlen im Binärsystem Q4 angegebenen Zahlen ins Dezimalsystem um - oder andersrum: * 10101100b = ?? d * 00010001b = ?? d * 6,375d = ?? b * 9,9375d = ?? b ---- {{:aufgabe.png?nolink |}} === (A3) === * Bestimme den Zahlbereich, der sich mit 8 Bit in Q4 darstellen lässt. * Welche Differenz haben in dieser Darstellung zwei nebeneinander liegende Zahlen? Wie kann man diese "Genauigkeit" allgemein berechnen? * Erläutere, warum man 0,1d nur näherungsweise als Festkommazahl darstellen kann. ---- {{:aufgabe.png?nolink |}} === (A4) === Berechne die Summe (binär) zweier Q4-Zahlen und kontrolliere das Ergebnis, indem du alle Werte ins Dezimalsystem umrechnest. (i) 00111100b 01000101b (ii) 00011000b 00001000b ---- {{:aufgabe.png?nolink |}} === (A5) === * Berechne mit schriftlicher Multiplikation das Produkt der beiden Q4-Zahlen. Vergleiche dein Ergebnis mit den Dezimalzahlen: ''00001000b∙00010000b ='' * Warum liefert die schriftliche Multiplikation ein falsches Ergebnis? Wie muss man dieses korrigieren? ==== Material ==== {{simplefilelist>.:*}}