Computerarithmetik
In C: Was ergibt 0 − 1 bei einer 32-Bit-Ganzzahl ohne Vorzeichen (unsigned int)?
- A−1
- B4294967295
- 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).