Computerarithmetiek
Wat is in C het resultaat van het aftrekken van 1 van 0 bij een niet-ondertekend 32-bits geheel getal (unsigned int)?
- A−1
- B4294967295
- CHet blijft 0
Antwoord en toelichting tonen
Antwoord: B. 4294967295
Niet-ondertekende gehele getallen kennen geen negatieve getallen en in C is vastgelegd dat het resultaat modulo 2³² wordt behandeld (wrap-around). 0 − 1 is 2³² − 1 = 4294967295 en het bitpatroon bestaat uit alleen enen. Daarom wordt een lus die i telkens met 1 verlaagt tot i 0 is, met een niet-ondertekende variabele en de voorwaarde i >= 0, altijd waar en eindigt nooit. −1 kan niet bij niet-ondertekende getallen worden weergegeven, en het resultaat blijft niet bij 0 staan (verzadigt niet).