Concept de débordement entier

Comment int débordement fonctionne. Je veux dire quel serait le résultat final d’une valeur entière si un débordement se produit? J’ai besoin de le comprendre sur papier. Comme si on me donnait une question à choix multiple:

11 ^ 5 produit:
une. 12
b. 14
c. 15
ré. 17

Je sais que la réponse est (b)14 , mais vous voulez savoir pourquoi?

  DecVal BinVal 11 -> 1011 XOR 5 -> 0101 ------- 14 -> 1110 

Pour votre information, cela n’a rien à voir avec le débordement int.

Puisque vous parlez de conclusion, je réponds ci-dessous. Mais comme il ressort clairement des commentaires, vous avez vraiment essayé l’expression C ++ 11^5 , un peu au niveau XOR, et obtenu la réponse 14, qui n’a rien à voir avec l’enveloppement. Le résultat XOR de chaque paire de bits est 0 s’il s’agit de la même valeur et 1 s’il est différent.


Maintenant, dans la suite, ^ désigne une exponentiation; c’est une notation commune pour cela.

11 ^ 5 = 161051.

Prenons maintenant une situation dans laquelle 16 bits sont utilisés pour représenter des nombres entiers et où il n’y a qu’une magnitude, aucun signe. C’est-à-dire un type entier C ++ non signé de 16 bits. Ensuite, il y a 2 ^ 16 modèles de bits possibles, numérotés de 0 à 2 ^ 16 – 1 et représentant ces nombres.

161051 est supérieur à la plus grande valeur possible de ce type 16 bits. S’il s’agissait de 2 ^ 16, il correspondrait exactement à 0 (appelé « retour à la ligne» ). S’il était 2 ^ 16 + 1, il correspondrait à 1, et ainsi de suite. Donc, cela correspond à 161051 – 2 ^ 16.

Maintenant, si cela aussi était supérieur à 2 ^ 16-1, vous répéteriez le processus.

Et cela produit le rest de la division entière par 2 ^ 16.

Cela correspond essentiellement à la suppression de tous les bits, à l’exception des 16 moins importants.

À propos, le résultat de cet exemple ne correspond à aucun de vos choix (a), (b), (c) ou (d).