Bases de la programmation en C

uint8_t r = 0x5A;
r |= 0x01;
r &= ~0x10;
r ^= 0x0F;
printf("0x%02X\n", r);

uint8_t est un type entier non signé de 8 bits. Quelle est la sortie obtenue en exécutant le code ci-dessus ?

  1. A0x44
  2. B0x4F
  3. C0x54
Afficher la réponse et l'explication

Réponse : A. 0x44

0x5A s'écrit 0101 1010 en binaire. |= 0x01 met le bit 0 à 1 et donne 0101 1011 (0x5B), puis &= ~0x10 met le bit 4 à 0 et donne 0100 1011 (0x4B). Le dernier ^= 0x0F inverse les 4 bits de poids faible et donne 0100 0100, soit 0x44. | met des bits à 1, & combiné à ~ met des bits à 0, et ^ inverse des bits.

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

Autres questions sur Bases de la programmation en C

  1. uint8_t est un type entier non signé de 8 bits. Quelle est la sortie obtenue en exécutant le code ci-dessus, qui incrémente x 10 fois ?
  2. unsigned char fait 8 bits et int fait 32 bits. Quelle est la sortie obtenue en exécutant le code ci-dessus ?
  3. uint8_t est un type entier non signé de 8 bits et int fait 32 bits. Quel est le résultat de l'exécution du code ci-dessus ?
  4. int et unsigned int font 32 bits. Quel est le résultat de l'exécution du code ci-dessus ?
  5. unsigned int fait 32 bits. Quel est le comportement du code ci-dessus à l'exécution ?