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.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Les chiffres
  5. Mises en situation
  6. 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;
    }
    `

    • 4
    • 260
    • 255
    • -252
    Voir la réponse

    4

    c tient 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.