Folien:

Grdl.Inf.V5.pptx

Grdl.Inf.V5_2.pptx

Beispielprojekte :

  1. Algorithmus zur Umwandlung einer Dezimalzahl in einen Binär-String

    ConsoleApplication9.zip

  2. C++-Datentypen für ganzen Zahlen (int8_t, int16_t, int)

    ConsoleApplicationBinary.zip

Materialien:

Lehrbuch “Grundlagen der Technischen Informatik”

Holdings: Grundlagen der Technischen Informatik :: Hochschule Zittau / Görlitz, Hochschulbibliothek

Lernvideo zum Thema “Darstellung von Gleitkommazahlen im Computer”:

https://go.screenpal.com/watch/cTlnY0nq74j

<aside> 💡

Ergänzung zum Video

Der positive (und analog dazu der negative) Wertebereich des Datentyps float lässt sich unmittelbar aus der binären Gleitkommadarstellung von Zahlen nach IEEE-754 berechnen.

Wir berechnen beispielsweise die größtmögliche Zahl, die sich mit einem 8-Bit-Exponenten (Wertebereich für den Exponenten: -126 … 127) und einer 23-Bit-Mantisse in float darstellen lässt. Die Zahl besitzt folgendes Schema:

1.11111111111111111111111* 2^127

Durch Multiplikation mit der Potenz 2^127 ergibt sich

111111111111111111111111000000…00000, also eine 128 Bit breite Binärzahl, bei der die 24 höchsten Stellen, nämlich die Stellen 104 bis 127, mit 1 und die restlichen Stellen, nämlich 0 bis 103, mit 0 belegt sind.

Daraus ergibt sich die Dezimalzahl

2^127 + 2^126 + 2^125 + … + 2^104 ≈ 3.402823466*10^38

Wenn Sie allerdings versuchen, diese Summe mit einer for-Schleife zu berechnen, werden Sie ein falsches Ergebnis erhalten, da die Datentypen float und double aufgrund ihrer Genauigkeitsgrenzen nicht in der Lage sind, die einzelnen Summanden 2^104, 2^105, … exakt darzustellen!

</aside>

<aside> 🔥

Unfälle in der Geschichte aufgrund von Programmierfehlern

  1. Explosion der Ariane-5-Rakete:

    https://www-user.tu-chemnitz.de/~uro/teaching/crashed-numeric/ariane5/ (Dr. Roman Unger)

    “Bei der Konvertierung der Horizontalgeschwindigkeit der Rakete von einer 64-Bit Gleitpunkt- in eine 16-Bit Ganzzahl kam es schlicht und einfach zu einem Überlauf, da die entsprechenden Zeilen der Software noch aus Ariane 4 - Programmen stammten. Die Ariane 4 war nicht so schnell, daß es dazu kommen kann, also hatte es damals niemand für nötig befunden, den Bereich abzuchecken.”

  2. Fehlflug einer amerikanischen Patriot-Rakete:

    https://www-user.tu-chemnitz.de/~uro/teaching/crashed-numeric/patriot/ (Dr. Roman Unger)

    “Der Patriot-Rechner mißt seine Zeit in Zehntel-Sekunden und speichert dies in einem 24-Bit Register. Nun ist aber der Bruch 1/10 in Gleitpunktdarstellung im Binärsystem unendlich.

    1/10 = 0.000110011001100110011001100110011001100 ...

    Auf 24 Bits gestutzt ist das

    0.00011001100110011001100

    und somit egibt sich ein Fehler von

    0.0000000000000000000000011001100

    bzw. dezimal 0.000000095 Sekunden pro Zehntelsekunde, der sich in 100 Stunden auf 0.000000095 x 100 x 60 x 60 x 10=0.34 Sekunden aufaddiert. Eine mit 1676 Metern pro Sekunde anfliegende Scud legt in dieser Zeit etwa 500 Meter zurück und das reicht aus, um aus dem Erfassungsbereich der Patriot herauszukommen.”

  3. Therac-25 (1985-1987)

    https://de.wikipedia.org/wiki/Therac-25

    “Therac-25 war ein Linearbeschleuniger zur Anwendung in der Strahlentherapie.

    … Ein weiterer Softwarefehler war, dass ein Flag, das die Notwendigkeit einer Positionsprüfung der Drehscheibe, auf der auch das Wolframtarget angebracht ist, anzeigte, während einer Einstellungsphase nicht auf einen festen Wert ungleich 0 gesetzt, sondern ständig erhöht wurde. Dieses Flag war in einer 8-Bit-Variable abgelegt, hatte also nach jeder 256. Erhöhung wegen Überlauf den Wert 0. Wenn der Bediener genau dann die Datenübernahme initiierte, überprüfte das System nicht, ob bei vorgesehener Röntgenstrahlung das Wolframtarget wirklich im Strahlengang war, oder z. B. noch ein Spiegel für die optische Ausrichtung von Patienten und bestrahlter Fläche. Dies führte offenbar zu der Überdosierung am 17. Januar 1987 im Yakima Valley Memorial Hospital.

Anmerkung: Ich habe ChatGPT nach einer Liste mit ähnlichen Fällen gefragt. Neben den bekannten Fällen (s.o.) hat mir das Modell mindestens 2 Fälle angeboten (Vancouver Skytrain (1981) – Integer-Overflow, Tokyo Stock Exchange (2010) – Ganzzahlüberlauf im Order-System), die von der KI rein erfunden waren. Die KI hat sich entschuldigt und die Fälle “zurückgenommen”, als ich um eine Quellenangabe gebeten habe…

</aside>