Computerarithmetik

In C: Was ergibt 0 − 1 bei einer 32-Bit-Ganzzahl ohne Vorzeichen (unsigned int)?

  1. A−1
  2. B4294967295
  3. CBleibt bei 0
Antwort und Erläuterung anzeigen

Antwort: B. 4294967295

Vorzeichenlose Ganzzahlen kennen keine negativen Zahlen, und in C ist festgelegt, dass das Ergebnis als Rest modulo 2³² behandelt wird (Umschlagen). 0 − 1 ergibt 2³² − 1 = 4294967295, die Bitfolge besteht aus lauter Einsen. Daher wird eine Schleife, die „herunterzählt, bis i 0 ist“, mit einer vorzeichenlosen Variablen und der Bedingung i >= 0 zur Endlosschleife, da die Bedingung stets wahr ist. −1 ist ohne Vorzeichen nicht darstellbar, und das Ergebnis bleibt auch nicht bei 0 stehen (Sättigung).

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Computerarithmetik

  1. Wie lässt sich bei der Addition vorzeichenloser Ganzzahlen feststellen, dass das Ergebnis den darstellbaren Bereich überschritten hat (Überlauf)?
  2. Welche Aussage zum Abstand benachbarter darstellbarer Werte bei Gleitkommazahlen ist korrekt?
  3. Bis zu welcher Obergrenze lassen sich bei einfacher Genauigkeit nach IEEE 754 ab 0 alle ganzen Zahlen exakt darstellen?
  4. Was ist der Hauptgrund, warum Geldbeträge oft nicht als binäre Gleitkommazahlen, sondern als Ganzzahlen mit der kleinsten Einheit (1 Yen oder 1 Cent) als 1 behandelt werden?
  5. Was ist der Hauptgrund, beim gemischtpräzisen KI-Training die meisten Berechnungen in FP16 oder bfloat16 auszuführen, die ursprünglichen Gewichtswerte (Master-Gewichte) aber in FP32 zu halten?