Festkommazahlen: binär darstellen und rechnen
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 positive, vorzeichenlose Binärzahlen. 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. Die Bits links vom Komma stehen 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. Andere Q-Konventionen geben zusätzlich die Zahl der Ganzzahl- oder Vorzeichenbits an. Deshalb solltest du bei einer Q-Bezeichnung immer prüfen, wie sie definiert wurde.
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$;
- gespeicherter Ganzzahlwert = darzustellender Wert mal $2^m$.
Wandle 10101100 aus Q4 in eine Dezimalzahl um.
- Als vorzeichenlose Ganzzahl hat
10101100den Wert $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$$
Die vorzeichenlose Binärdarstellung von $102$ ist 01100110. Daher gilt:
$6{,}375\rightarrow$ 01100110.
Die Multiplikation liefert eine ganze Zahl. 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 binärer Bruch mit endlich vielen Stellen 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.
- $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. Das Muster 01111011 besitzt den Ganzzahlwert $123$ und stellt
$$123:16=7{,}6875$$
dar. Die Abweichung zu $7{,}7$ beträgt $0{,}0125$. Der gespeicherte Wert ist also eine Näherung.
Eine Näherung innerhalb des Wertebereichs heißt Quantisierung. Liegt ein Wert über dem größten darstellbaren Wert, reicht bloßes Runden dagegen nicht aus: Das Format hat dann einen Überlauf beziehungsweise einen nicht darstellbaren Eingabewert.
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.
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 musst du anschließend durch $16$ teilen beziehungsweise das Rohprodukt um vier Bits nach rechts verschieben.
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 als Q4 lesen, erhieltest du eine falsche Kommaposition.
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 werden häufig dezimale Festkommawerte verwendet: 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.
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 Wert und Einheit im erlaubten Bereich liegen.
Mit Google fortfahren