« »

Gleitkommazahlen

a)

Level 1: Wissen

Stellen Sie die Dezimalzahl $32_{10}$ als 32-Bit-Gleitkommazahl gemäß IEEE-Standard 754 dar. Geben Sie Ihre Lösung als Bitfolge und in Hexadezimalschreibweise an.

Hinweis

Eine Gleitkommazahl mit einfacher Präzision (32 Bit) setzt sich folgendermaßen zusammen:

  • 1 Bit Vorzeichen (v)
  • 8 Bit Exponent in Bias-Darstellung mit $b = 2^{l-1}-1$ (e)
  • 23 Bit Mantisse (m)

$z = (-1)^{v} \cdot (1+m) \cdot 2^{e-b}$

$m=2^{\text{Bits der Mantisse}} \cdot \frac{\text{Zahl - Untergrenze}}{\text{Obergrenze - Untergrenze}}$

VEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM

Lösung

Darstellung:

  • einfache Präzision (32 Bit): 1 Bit Vorzeichen (v), 8 Bit Exponent (e, Bias-Darstellung), 23 Bit Mantisse (m)
  • $z = (-1)^{v} \cdot (1+m) \cdot 2^{e-b}$

Vorzeichen: 0, da positiv ($(-1)^0 = 1$)

Exponent:

  • Ziel: nur eine Eins vor dem Komma
  • Komma wird um 5 Stellen verschoben, da $32_{10} = 10.0000_{2}$
  • Bias $b = 2^{l-1} -1 = 2^{8-1} -1 = 127$
  • $E = 5 + 127 = 132_{10}$ = $1000.0100_2$

Mantisse:

  • $M = 2^{\text{Bits der Mantisse}} \cdot \frac{\text{Zahl - Untergrenze}}{\text{Obergrenze - Untergrenze}}$
  • Exponent e ist 5
  • minimale Zahl: $10.0000_2 = 32_{10}$ → Untergrenze = 32
  • maximale Zahl: $11.1111_2 = 63_{10}$ → Obergrenze = 64
  • somit Intervall $[2^5, 2^6) = [32, 64)$
  • $M = 2^{23} \cdot \frac{32 - 32}{64 - 32} = 0$ → implizit 1,0

Ergebnis: 0x42000000

VEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
0100 0010 0000 0000 0000 0000 0000 0000

Hinweis: Diese Lösung folgt der formalen Anleitung, mit der generische Umwandlungsaufgaben gelöst werden können. Dass dieser Weg mitunter abgekürzt werden kann, zeigt das naheliegende Ergebnis zur Berechnung der Mantisse.

b)

Level 1: Wissen

Interpretieren Sie den Hexadezimalwert C187E69B$_{16}$ als 32-Bit-Gleitkommazahl gemäß IEEE-Standard 754 und geben Sie das Ergebnis als Dezimalzahl an.

Lösung
   C    1    8    7    E    6    9    B (hex)
1100 0001 1000 0111 1110 0110 1001 1011 (binär)
VEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
  • Vorzeichen: 1 → negative Zahl ($(-1)^1 = -1$)
  • Bias $b = 2^{l-1} -1 = 2^{8-1} -1 = 127$
  • Exponent: 1000.0011 → 131$_{10}$ → 131 - 127 = 4
  • Mantisse: 000.0111.1110.0110.1001.1011 → 517.787$_{10}$
  • Intervall: $[2^4,2^5) = [16, 32)$

$$ m=2^{\text{Bits der Mantisse}} \cdot \frac{\text{Zahl - Untergrenze}}{\text{Obergrenze - Untergrenze}} $$

$$ 517.787 = 2^{23} \cdot \frac{x - 16}{16} \mid \cdot 16 $$

$$ 8.284.592 = 2^{23} \cdot (x - 16) \mid \div 2^{23} $$

$$ 0{,}987600327 = x - 16 \mid + 16 $$

$$ x \approx 16{,}987600327 $$

  • Endergebnis: -16,987600327

c)

Level 1: Wissen

Die folgende Gleitkommazahl ist im 32-Bit IEEE 754 Gleitkommaformat codiert. Geben Sie die entsprechende Dezimalzahl in Exponentialdarstellung an.

1011 1111 1111 0000 0000 0000 0000 0000

Diese Aufgabe war Teil der Klausur im Sommersemester 2024 (Zweittermin).

Lösung
VEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM

Vorzeichen: $1$ → negative Zahl ($(-1)^1 = -1$)

Exponent: 0111.1111 → 127

Mantisse: 111.0000.0000.0000.0000.0000 → $1 + \frac{1}{2} + \frac{1}{4} + \frac{1}{8} = 1{,}875$

Ergebnis: $-1{,}875 \cdot 10^0 = -1{,}875$

d)

Level 4: Analysieren

Stellen Sie die Zahl $99{,}7_{10}$ im 32-Bit IEEE 754 Gleitkommaformat dar. Beschreiben Sie das Problem, das bei der Darstellung der Zahl auftritt.

Diese Aufgabe war Teil der Klausur im Sommersemester 2024 (Probeklausur).

Lösung

Vorzeichen: 0, da positiv ($(-1)^0 = 1$)

Exponent:

  • $99_{10} = 110.0011_2$
  • Ziel: Nur eine 1 vor dem Komma, also verschieben um 6 Stellen → Exponent $e = 6$
  • Bias $b = 2^{l-1} -1 = 2^{8-1} -1 = 127$
  • Exponent $E = e + b = 6 + 127 = 133_{10}$ = $1000.0101_2$

Mantisse:

  • $m=2^{\text{Bits der Mantisse}} \cdot \frac{\text{Zahl - Untergrenze}}{\text{Obergrenze - Untergrenze}}$
  • Exponent e ist 6
  • Intervall $[2^e, 2^{e+1}) = [2^6, 2^7) = [64, 128)$
  • $M = 2^{23} \cdot \frac{99{,}7 - 64}{128 - 64} = 4679270,4 \approx 4679270_{10} = 100.0111.0110.0110.0110.0110_2$

Ergebnis:

VEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
0100 0010 1100 0111 0110 0110 0110 0110

Problem:

Durch die durchgeführte Rundung der Mantisse geht Präzision verloren, wodurch der Ursprungswert leicht von der im Gleitkommaformat repräsentierten Zahl abweicht. Dieser Effekt verstärkt sich mit größer werdenden Zahlen.

(Die hier errechnete Binärzahl repräsentiert statt 99,7 den Wert 99,6999969482421875.)

e)

Level 3: Anwenden

In der folgenden IEEE 754 32-Bit-Gleitkommazahl sind die Bits des Exponenten abhanden gekommen.

1xxx xxxx x000 0101 0000 0000 0000 0000

Geben Sie die entsprechenden Bits des Exponenten an, sodass die durch die Gleitkommazahl dargestellte Zahl eine Ganzzahl (Integer, also alle Nachkommastellen = 0) ist. Wenn es mehrere Antwortmöglichkeiten gibt, dann wählen Sie die Antwort, bei der die Ganzzahl den kleinsten Absolutwert besitzt.

Welche Zahl wird mit dem ermittelten Exponenten durch die Gleitkommazahl repräsentiert?

Diese Aufgabe war Teil der Klausur im Sommersemester 2025 (Zweittermin).

Lösung

Ansatz:

  • In der Mantisse sind Bit 5 und 7 gesetzt ($1 + \frac{1}{2^5} + \frac{1}{2^7} = 1 + \frac{1}{32} + \frac{1}{128}$).
  • Das niedrigstwertige gesetzte Bit der Mantisse ist Bit 7 ($\frac{1}{2^7}$).
  • Wir müssen daher unser Binärkomma um mindestens 7 Stellen nach rechts verschieben, um eine Ganzzahl zu erhalten.
  • Eine Multiplikation mit 2 verschiebt das Komma um eine Stelle nach rechts. Für 7 Stellen muss die Mantisse also mit mindestens $2^7$ multipliziert werden.
  • Damit ist unser Zielexponent $e = 7$.
  • Das Bias beträgt $b = 2^{l-1} -1 = 2^{8-1} -1 = 127$.
  • Im Exzesscode hat unser Exponent den Wert $E = 7 + 127 = 134_{10} = 1000.0110_2$.

Ergebnis: $-1^1 \cdot 2^7 \cdot (1 + \frac{1}{32} + \frac{1}{128}) = - 133$

VEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
1100 0011 0000 0101 0000 0000 0000 0000

f)

Level 1: Wissen

Zusatzaufgabe: Folgende zusätzliche Aufgaben können zum Üben verwendet und etwa mit Online-Tools wie diesem überprüft werden. Auf diese Weise lassen sich auch weitere Aufgaben erstellen. Alle Aufgaben beziehen sich auf das 32-Bit-Gleitkommaformat gemäß IEEE 754.

  • Geben Sie die Dezimalzahl -992$_{10}$ im Gleitkommaformat an.
  • Geben Sie die Dezimalzahl -4,0147057$_{10}$ im Gleitkommaformat an. Welche Zahl wird im Binärformat tatsächlich repräsentiert?
  • Geben Sie die Hexadezimalzahl 4383C38E$_{16}$ im Gleitkommaformat an.
  • Berechnen Sie die entsprechende Dezimalzahl der Binärdarstellung $0100.0000.0111.1000.0000.0000.0000.0000_2$

Lernziele

In dieser Aufgabe …

  • untersuchen die Studierenden das Format der Gleitkommazahlen nach IEEE 754-2008.
  • betrachten die Studierenden Rundungsfehler.
  • wiederholen die Studierenden die Umwandlung zwischen dem Binär- und dem Hexadezimalsystem.
  • erweitern die Studierenden ihre Erfahrungen mit dem Exzess-Code um eine Darstellung mit anderem Bias.