Arithmétique des ordinateurs
En langage C, quel est le résultat de la soustraction de 1 à 0 pour un entier non signé de 32 bits (unsigned int) ?
- A−1
- B4294967295
- CIl reste égal à 0
Afficher la réponse et l'explication
Réponse : B. 4294967295
Les entiers non signés n'ont pas de valeurs négatives, et le langage C prévoit que le résultat est pris modulo 2³² (rebouclage). 0 − 1 donne 2³² − 1 = 4294967295, dont tous les bits sont à 1. Ainsi, une boucle « décrémenter i jusqu'à 0 » écrite avec une variable non signée et la condition i >= 0 ne se termine jamais, la condition étant toujours vraie. −1 n'est pas représentable en non signé, et le résultat ne reste pas bloqué à 0 (pas de saturation).
Continuer : 9 autres questions sur Arithmétique des ordinateurs