Arithmétique binaire et débordement
Addition et soustraction sur n bits, soustraction par complément à deux, décalages, drapeaux de retenue et de débordement, et ce qu'un débordement fait dans un vrai programme.
- 23 cartes
- 6 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Les chiffres
- Mises en situation
- Comprendre
Quelques cartes du deck
Addition binaire : de quoi s'agit-il ?
Voir la réponse
Addition posée bit par bit de droite à gauche, où 1 + 1 vaut 0 avec une retenue de 1, et 1 + 1 + 1 vaut 1 avec une retenue de 1.
0110 1101 + 0011 0111 = 1010 0100, soit 109 + 55 = 164. Le circuit est le même pour les entiers signés et non signés : seule l'interprétation du résultat change.
Qu'affiche ce programme C ?
```c
#include <stdio.h>
int main(void) {
unsigned char c = 250;
c += 10;
printf("%d\n", c);
return 0;
}`4260255-252
Voir la réponse
4ctient sur 8 bits : 260 est tronqué à 260 − 256 = 4. Il n'y a ni erreur ni saturation à 255, et le type non signé n'a pas de valeur négative.Le drapeau … signale un dépassement pour les entiers non signés, le drapeau … un dépassement pour les entiers signés.
Voir la réponse
Le drapeau C signale un dépassement pour les entiers non signés, le drapeau V un dépassement pour les entiers signés.
L'unité arithmétique calcule une seule fois et positionne les deux drapeaux ; c'est au programme de regarder celui qui correspond au type qu'il utilise.
Débordement d'entier : de quoi s'agit-il ?
Voir la réponse
Situation où le résultat d'un calcul ne tient pas dans le nombre de bits du type : le processeur n'en garde que les bits de poids faible.
Sur 8 bits non signés, 250 + 10 = 260 devient 4 (260 − 256). En C, c'est défini pour les non signés ; pour les signés, le comportement est indéfini.