Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
faecher:informatik:oberstufe:codierung:zahlendarstellungen:gleitkommazahlen:start [20.09.2022 15:38] – sbel | faecher:informatik:oberstufe:codierung:zahlendarstellungen:gleitkommazahlen:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Gleitkommazahlen ====== | ||
- | |||
- | Um die Einschränkung der Festkommazahlen aufzuheben, dass dort nur Brüche mit 2er-Potenmzen im Nenner exakt dargestellt werden können benötigt man eine weitere Zahlendarstellung. Diese funktioniert allerdings grundlegend anders als die bisherige binäre Zahldarstellung (Binär, Zweierkomplement, | ||
- | |||
- | ===== Vorüberlegungen im Dezimalsystem ===== | ||
- | |||
- | <WRAP center round info 90%> | ||
- | Jede endliche Dezimalzahl kann man in der Form M • 10 < | ||
- | |||
- | dabei heißt **M " | ||
- | |||
- | * Die Mantisse ist eine Dezimalzahl, | ||
- | * Der Exponent ist eine Ganze Zahl | ||
- | |||
- | </ | ||
- | |||
- | **Beispiele: | ||
- | |||
- | * 435,861 = 4,35861 * 10< | ||
- | * 0,0003562 = 3,562 * 10 < | ||
- | |||
- | ===== Im Binärsystem (IEEE 754) ===== | ||
- | |||
- | Die [[https:// | ||
- | |||
- | |||
- | Die Darstellung einer Gleitkommazahl **x = s ⋅ m ⋅ b < | ||
- | |||
- | besteht aus: | ||
- | |||
- | * Vorzeichen s (1 Bit) | ||
- | * Mantisse m (p Bits) | ||
- | * Basis b (bei normalisierten Gleitkommazahlen nach IEEE 754 ist b = 2) | ||
- | * Exponent e (r Bits) | ||
- | |||
- | Ein wesentlicher Unterschied zur Dezimadarstellung ist also, dass Mantisse, Exponent binär dargestellt werden, und die Basis der Potenz 2 ist. Das Vorzeichenbit ist so definiert, dass s=0 positive Zahlen darstellt, s=1 negative Zahlen. | ||
- | |||
- | {{ : | ||
- | |||
- | An das **Mantissenbitmuster wird links stets eine 1 angehängt: 1,m**. Das Bitmuster der Mantisse m steht also nur für negative 2er-Potenzen. Damit spart man sich ein Bit Speicherplatz (und gewinnt damit ein Bit an Genauigkeit) weil man sich diese erste 1 immer " | ||
- | |||
- | Durch die Normalisierung kann man wie bei den dezimalen Fließkommazahlen diesen Zustand immer erreichen, so dass die Mantisse mit der vorangestellten 1 auf der Stelle 2< | ||
- | |||
- | Der Exponent wird aus technischen Gründen mit einem **Bias** versehen, so dass das Exponentenbitmuster immer eine positive Zahl darstellt. | ||
- | |||
- | Beispiel: Wenn wer Exponent 8 Bit lang ist, kann man damit als Zweierkomplement Werte zwischen -126 und 127 für den Exponenten darstellen. Damit man sich die Komplementdartstellung spart, wird festgelegt, dass das Bitmuster für den Exponenten ermittelt wird, indem zum echten Wert von e der **Bias** 127 addiert wird. | ||
- | |||
- | Man arbeitet dann mit Bitmustern für Werte zwischen 1 und 254 und kann auf das Zweierkomplement verzichten, wenn man weiß, dass man umgekehrt wieder 127 von einem errechneten Bitmuster subtrahieren muss, um den " | ||
- | |||
- | Fließkommazahlen sind für unterschiedliche Bitlängen und Genauigkeiten definiert: | ||
- | |||
- | {{ : | ||
- | |||