Festkommazahlen: binär darstellen und rechnen
Wie speichert ein Computer eine Zahl mit Nachkommastellen? Bei einer Festkommazahl liegt die Position des Kommas von Anfang an fest. Gespeichert wird deshalb nur ein ganzzahliges Bitmuster. Das vereinbarte Format bestimmt, welchen Zahlenwert dieses Muster darstellt.
Auf dieser Seite geht es um vorzeichenlose Binärzahlen, also positive Werte und null. Du lernst, ein Festkommaformat auszuwerten, seinen Wertebereich zu bestimmen und bei Rechnungen die Skalierung richtig zu behandeln.
Hake ab, was du schon kannst — und komm am Ende hierher zurück!
Wie wird aus einem Bitmuster eine Kommazahl?
Stell dir ein 8-Bit-Muster vor, bei dem vier Bits vor und vier Bits nach dem Komma liegen. Das Komma wird nicht gespeichert, sondern beim Lesen gedanklich eingesetzt:
00111000 wird zu 0011,1000.
Festkommazahl
Eine Festkommazahl ist eine Zahlendarstellung mit fest vereinbarter Kommaposition. Bei der hier betrachteten vorzeichenlosen Binärdarstellung stehen die Bits links vom Komma für nichtnegative Zweierpotenzen, die Bits rechts davon für negative Zweierpotenzen.
Die Nachkommastellen besitzen der Reihe nach die Werte
$$2^{-1}=0{,}5,\quad 2^{-2}=0{,}25,\quad 2^{-3}=0{,}125,\quad 2^{-4}=0{,}0625.$$
Ein Format mit vier Nachkommabits wird auf dieser Seite kurz Q4 genannt. Die Bezeichnung allein legt hier weder Gesamtbreite noch Vorzeichen fest. Prüfe deshalb immer zusätzlich, wie viele Bits das Format hat und ob es vorzeichenlos ist.
Werte 0011,1000 aus:
- Der Vorkommateil
0011hat den Wert $3$. - Im Nachkommanteil
1000ist nur das Bit mit dem Stellenwert $2^{-1}=0{,}5$ gesetzt. - Zusammen ergibt sich $3+0{,}5=3{,}5$.
Daher gilt im vereinbarten Q4-Format:
00111000 $\rightarrow 3{,}5$.
Wie rechnest du zwischen Binär- und Dezimalwert um?
Mit vier Nachkommabits besitzt das Format den Skalierungsfaktor $2^4=16$. Der gespeicherte ganzzahlige Bitwert ist also das 16-Fache der dargestellten Zahl.
Bei $m$ Nachkommabits gilt:
- dargestellter Wert = gespeicherter Ganzzahlwert geteilt durch $2^m$;
- bei exakt darstellbaren Werten: gespeicherter Ganzzahlwert = darzustellender Wert mal $2^m$.
Zum exakten Codieren muss das Produkt eine ganze Zahl ergeben und in die verfügbare Bitzahl passen. Andernfalls brauchst du eine Rundungsregel oder ein anderes Format.
Wandle 10101100 aus Q4 in eine Dezimalzahl um.
- Als vorzeichenlose Ganzzahl hat
10101100den Wert $128+32+8+4=172$. - Wegen der vier Nachkommabits teilst du durch $16$.
$$172:16=10{,}75$$
Also stellt das Muster den Wert $10{,}75$ dar.
Für die Gegenrichtung multiplizierst du zuerst mit dem Skalierungsfaktor.
Codiere $6{,}375$ in einem 8-Bit-Q4-Format.
$$6{,}375\cdot16=102$$
Zerlege $102=64+32+4+2$. Setze die Bits mit diesen Stellenwerten auf 1: Die vorzeichenlose Binärdarstellung ist 01100110. Daher gilt:
$6{,}375\rightarrow$ 01100110.
Das Produkt ist ganzzahlig und passt in acht Bits. Der Wert ist somit in diesem Format exakt darstellbar.
Wähle in jeder Lücke die passende Form und prüfe anschließend deine Antworten.
Bei vier Nachkommabits beträgt der Skalierungsfaktor . Zum Auswerten eines gespeicherten Musters wird sein Ganzzahlwert durch geteilt. Zum Codieren eines Dezimalwerts wird er mit multipliziert.
Wie hängen Auflösung und Wertebereich zusammen?
Die Auflösung ist der Abstand zwischen zwei benachbarten darstellbaren Werten. Bei $m$ Nachkommabits beträgt sie $2^{-m}$.
Für Q4 gilt:
$$2^{-4}=\frac{1}{16}=0{,}0625.$$
Mit 8 Bits gibt es die gespeicherten Ganzzahlwerte von $0$ bis $255$. Nach der Division durch $16$ reicht der Wertebereich daher von $0$ bis
$$\frac{255}{16}=15{,}9375.$$
Das größte Muster 11111111 bedeutet in Q4:
$$15+0{,}5+0{,}25+0{,}125+0{,}0625=15{,}9375.$$
Der Wert $16$ liegt bereits außerhalb des Bereichs. Der positive Wert $0{,}06$ ist kleiner als die erste positive Rasterstufe $0{,}0625$.
Bei gleichbleibender Gesamtzahl an Bits entsteht ein Zielkonflikt:
- Mehr Nachkommabits verkleinern die Schrittweite und erhöhen damit die Auflösung.
- Gleichzeitig bleiben weniger Bits für große Werte übrig; der Wertebereich wird kleiner.
Warum sind manche Dezimalwerte nur Näherungen?
Ein endlicher binärer Nachkommateil ist eine Summe negativer Zweierpotenzen. Ein vollständig gekürzter Bruch ist deshalb genau dann endlich binär darstellbar, wenn sein Nenner eine Zweierpotenz ist. Zusätzlich muss das gewählte Format genügend Nachkommabits besitzen und der Wert in seinen Wertebereich passen.
- $3/8$ ist exakt darstellbar, denn der Nenner $8=2^3$ ist eine Zweierpotenz.
- $1/10$ ist nicht endlich binär darstellbar, denn der Nenner $10$ enthält außer dem Faktor $2$ auch den Faktor $5$.
Der Wert $7{,}7$ liegt nicht auf dem Q4-Raster: $7{,}7\cdot16=123{,}2$. Runden wir auf die nächste ganze Zahl, erhalten wir $123$. Das zugehörige Muster 01111011 stellt
$$123:16=7{,}6875$$
dar. Die Abweichung zu $7{,}7$ beträgt $0{,}0125$. Der gespeicherte Wert ist also eine Näherung.
Das Zuordnen eines Werts zu einer Stufe des darstellbaren Rasters heißt Quantisierung. Nicht passende Werte werden dabei nach einer festgelegten Regel gerundet. Liegt ein Rechenergebnis außerhalb des Wertebereichs, entsteht ein Überlauf. Auch einen Eingabewert außerhalb des Bereichs kannst du nicht unverändert speichern.
Wie rechnest du mit Festkommazahlen?
Für Rechnungen behandelst du die gespeicherten Muster wie Ganzzahlen. Du musst aber verfolgen, welche Skalierung diese Ganzzahlen besitzen.
Addition und Subtraktion
Beide Operanden müssen dieselbe Kommaposition haben. Dann kannst du ihre gespeicherten Ganzzahlwerte direkt addieren oder subtrahieren. Das Ergebnis behält die gemeinsame Skalierung. Prüfe danach seinen Wertebereich: Eine Summe kann zu groß werden; ein negatives Subtraktionsergebnis passt nicht in ein vorzeichenloses Format.
In Q4 gilt:
- $3{,}75\rightarrow 60$;
- $4{,}3125\rightarrow 69$.
Die gespeicherten Werte ergeben $60+69=129$. Zurückgerechnet erhältst du
$$129:16=8{,}0625.$$
Damit ist $3{,}75+4{,}3125=8{,}0625$.
Multiplikation
Bei der Multiplikation werden auch die Skalierungsfaktoren multipliziert. Zwei Q4-Faktoren erzeugen deshalb zunächst ein Rohprodukt mit acht Nachkommabits. Für ein Q4-Ergebnis teilst du das Rohprodukt anschließend durch $16$. Bleibt ein Rest, musst du runden. Einfaches Rechtsverschieben um vier Bits schneidet bei vorzeichenlosen Werten die letzten vier Bits ab und rundet damit ab. Anschließend prüfst du, ob das Ergebnis in die vorgesehene Bitzahl passt.
Berechne $3{,}5\cdot2{,}5$ in Q4.
- Codieren: $3{,}5\cdot16=56$ und $2{,}5\cdot16=40$.
- Ganzzahlig multiplizieren: $56\cdot40=2240$.
- Auf Q4 zurückskalieren: $2240:16=140$.
- Auswerten: $140:16=8{,}75$.
Das Q4-Ergebnis ist 10001100 und stellt $8{,}75$ dar.
Die Rechnung benötigt vorübergehend mehr Bits: Das Rohprodukt von 00111000 und 00101000 lautet 0000100011000000. Würdest du ohne Reskalierung nur die unteren acht Bits 11000000 als Q4 lesen, erhieltest du fälschlich $192:16=12$.
Bei Addition und Subtraktion gleichst du zuerst die Kommapositionen an. Bei der Multiplikation addieren sich die Zahlen der Nachkommabits; danach skalierst du auf das gewünschte Ergebnisformat zurück.
Wann ist Festkomma eine passende Wahl?
Festkomma eignet sich besonders, wenn der benötigte Wertebereich bekannt ist und überall dieselbe absolute Schrittweite gebraucht wird. Beispiele sind begrenzte Messbereiche, eingebettete Systeme und dezimal skalierte Geldbeträge.
Gleitkomma kann sehr unterschiedliche Größenordnungen darstellen. Seine absolute Schrittweite ist jedoch nicht über den gesamten Wertebereich konstant. Festkomma ist außerdem nicht auf jeder modernen Hardware automatisch schneller; die Wahl hängt von Zahlenbereich, benötigter Auflösung und Rechenumgebung ab.
Für Geldbeträge eignen sich dezimale Festkommawerte: Ein Betrag mit zwei Nachkommastellen kann etwa als ganze Zahl von Cent gespeichert werden. Dadurch bleibt das Dezimalraster erhalten, statt einen Wert wie $0{,}1$ nur binär anzunähern. Auch hier können Rechnungen eine Rundung auf volle Cent erfordern.
Prüfe vor der Wahl eines Formats:
- Welche kleinsten und größten Werte kommen vor?
- Welche Schrittweite wird benötigt?
- Müssen bestimmte Dezimalwerte exakt bleiben?
- Können Zwischenergebnisse, besonders Produkte, mehr Bits benötigen?
Karteikasten
Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.
Alles auf einen Blick
- Festkommazahl
- feste Kommaposition und ganzzahlig gespeichertes Bitmuster
- Auflösung durch die Zahl der Nachkommabits
- Wertebereich durch Gesamtbreite und Bitaufteilung
- Umrechnung über den Skalierungsfaktor $2^m$
- exakte Werte nur auf dem binären Raster
- Addition bei gleicher Skalierung
- Multiplikation mit anschließendem Reskalieren
Abschluss-Check
Du kannst dein Ergebnis zusätzlich selbst prüfen: Nenne bei jeder Rechnung zuerst das Format, verfolge den Skalierungsfaktor und kontrolliere am Ende, ob der Wert im erlaubten Bereich liegt.
Mit Google fortfahren