(0 Abstimmungen)

Wie rechnet denn ein Computer mit Gleitkommazahlen?

Bevor richtig los gelegt werden kann, ist es noch wichtig einen Fachbegriff aus der Mathematik und Informatik, die Mantisse zu verstehen.

Definition:

Die Mantisse (auch Signifikand genannt) ist der Teil einer Gleitkommazahl, der die signifikanten Stellen der Zahl enthält – also die tatsächlichen Ziffern ohne die Exponentialskalierung. Beispiel: Die Zahl \( 3,1415 * 10^2 \) hat:

  • Mantisse: 3,14153
  • Exponent: 2
  • Basis: 10

Im binären System (z. B. in der Informatik nach IEEE-754): Eine Gleitkommazahl wie \( 1,101 * 2^3\) hat: 

  • Mantisse: 1,1011
  • Exponent: 3
  • Basis: 2

Wichtig:

  • Die Mantisse gibt die Genauigkeit der Zahl an.
  • Der Exponent verschiebt das Komma (Skalierung).
  • Die Basis ist meist 10 (Dezimalsystem) oder 2 (Binärsystem).

Wie arbeitet die binäre Gleitkomma Arithmetik?

Die binäre Gleitkomma-Arithmetik ist ein Verfahren zur Darstellung und Berechnung von nicht-ganzzahligen Zahlen (z. B. Dezimalzahlen) im Binärsystem, wie es in Computern verwendet wird. Sie folgt meistens dem IEEE 754-Standard, der festlegt, wie solche Zahlen im Speicher repräsentiert und wie mit ihnen gerechnet wird.

Grundidee

Eine Gleitkommazahl wird wie folgt dargestellt

\(Wert = (-1)^s * 1.Mantisse *2^{Exponent} \)

  • s: Vorzeichenbit (0 = positiv, 1 = negativ)
  • Mantisse (auch Signifikand): Binärbruch mit führender 1 (normalisiert
  • Exponent: Skaliert die Zahl durch eine Zweierpotenz (wird mit einem Bias gespeichert)

Aufbau im IEEE 754 Standard (z. B. 32-bit „Single Precision“)

Teil Länge Bedeutung
Vorzeichen 1 Bit 0 = +, 1 = -
Exponent 8 Bit Exponent + Bias (127)
Mantisse 23 Bit Signifikante Stellen

Beispiel:

Die Gleitkommazahl -6.75 wird so gespeichert:

  1. Binär: -6,75 = -110,11 = -1,1011 * 2²
  2. Vorzeichen: 1
  3. Exponent: 2 → 2 + 127 = 129 → binär 10000001bin
  4. Mantisse: Nach dem führenden 1. die restlichen Bits: 101100.....bin

Rechenregeln bei Arithmetik

Addition/Subtraktion:

  1. Exponenten angleichen (kleinere Zahl wird verschoben)
  2. Mantissen addieren oder subtrahieren
  3. Ergebnis normalisieren
  4. Runden
  5. Überlauf/Unterlauf behandeln

Multiplikation:

  1. Mantissen multiplizieren
  2. Exponenten addieren
  3. Vorzeichen berechnen
  4. Normalisieren & runden

Beispiel: 1.5+2.25

  1. Binär:
    • \(1,5 = 1.1 = 1.1 * 2^0\)
    • \(2,25 = 10.01 = 1.001 *2^1 \)
  2. Exponenten angleichen:
    • \(1,5 = 1.1 = 1.1 * 2^0 = 0.11 *2^1\)
    • Jetzt sind beide Exponenten 1
  3. Beide Mantissen addieren:
    • \(0.11 + 1.001 = 1.111\)
  4. Ergebnis:
    • \(1.111 * 2^1 = 11.11 = 3,75 \)

Typische Probleme

  • Rundungsfehler: Nicht alle Dezimalzahlen lassen sich exakt binär darstellen (z. B. 0.1).
  • Überlauf: Zahl zu groß → Unendlich (Inf)
  • Unterlauf: Zahl zu klein → Null oder Subnormalzahl
  • Vergleichsprobleme: == kann fehlschlagen wegen Rundungen

Beispiel:

Die Dezimalzahl -6,75 soll in eine  IEEE 754 konforme (Single Precision, 32 Bit) Zahl umgewandelt werden.

  1. Vorzeichenbit
    • Die Zahl ist negativ → Vorzeichenbit = 1
  2. Umwandlung in Binärform
    -6,75 → binär:
    • \( 6 = 110 \)
    • \(0,75 = 0.11 → 0,75 = 0,5 + 0,25 = 2^{-1} + 2^{-2} \)
      Daraus folgt: 6,75 = 110.11 = 1.1011* 2²
  3. Exponent + Bias
    IEEE 754 verwendet einen Bias von 127 für 32 Bit:
    • Exponent = 2
    • Exponent mit Bias: 2+127=129
    • Binär: → 129 = 10000001
  4. Mantisse
    • Es werden nur die Nachkommastellen der normalisierten Zahl 1.1011 gespeichert
    • Mantisse ist 10110000000000000000000bin (auf 23 Bit aufgefüllt)

Zusammensetzen

Vorzeichen  Exponent Mantisse
1 10000001bin 10110000000000000000000bin

Daraus fogt: 1 10000001 10110000000000000000000bin

→ Hexadezimal

Gruppieren in "Quadrupel"

1100 0000 1101 1000 0000 0000 0000 0000bin → C0D80000hex

Wer noch mit dem binären Zahlensystem Probleme hat, sei hier noch auf die Blogbeiträge Zahlensysteme und Grundrechnungsarten verwiesen.