Arithmétique des ordinateurs

Quel est le résultat du décalage arithmétique d'un bit vers la droite de −8 (1111 1000) en entier signé sur 8 bits ?

  1. A124 (0111 1100)
  2. B−16 (1111 0000)
  3. C−4 (1111 1100)
Afficher la réponse et l'explication

Réponse : C. −4 (1111 1100)

Le décalage arithmétique à droite recopie le bit de signe dans le bit de poids fort libéré : 1111 1000 devient 1111 1100, soit −4 en complément à deux. Même pour un nombre négatif, un décalage d'un bit vers la droite divise par 2. Le décalage logique à droite, qui insère un 0 en poids fort, donne 0111 1100 = 124 et change le signe. −16 est le résultat d'un décalage d'un bit vers la gauche. Il faut aussi noter qu'en langage C, le comportement du décalage à droite d'un entier signé était laissé à l'implémentation.

S'entraîner sur ce thème Retour au thème

Autres questions sur Arithmétique des ordinateurs

  1. En langage C, quelle combinaison des résultats de −7 / 2 et de −7 >> 1 (décalage arithmétique à droite) en type int est correcte ?
  2. En langage C, quel est le résultat de la soustraction de 1 à 0 pour un entier non signé de 32 bits (unsigned int) ?
  3. Pour l'addition de deux entiers non signés, quelle méthode détermine correctement que le résultat a dépassé la plage représentable (débordement) ?
  4. Quelle description de l'écart entre valeurs représentables voisines en virgule flottante est correcte ?
  5. En simple précision IEEE 754, jusqu'à quelle limite tous les entiers à partir de 0 sont-ils représentables exactement ?