Avatar ·

Comment définir, réinitialiser et basculer un bit individuel en C++ ?

Bonjour à tous ! Je suis un développeur C++ débutant et j'ai rencontré un problème en travaillant avec les bits. Je dois gérer des bits individuels dans un nombre entier, mais je n'arrive pas à comprendre comment faire correctement.

J'ai une variable uint8_t flags = 0b00000000;. Je veux :

  • Définir le 3ème bit (le mettre à 1)
  • Réinitialiser le 5ème bit (le mettre à 0)
  • Basculer le 2ème bit (inverser sa valeur)

J'ai essayé d'écrire ce code :

uint8_t flags = 0b00000000;
// Définir le 3ème bit
flags = flags | 3;  // Mais ça ne fonctionne pas
// Réinitialiser le 5ème bit
flags = flags & 5;  // Ce n'est pas ça non plus
// Basculer le 2ème bit
flags = flags ^ 2;  // Ça semble fonctionner, mais je ne suis pas sûr

Le problème est que je ne comprends pas comment spécifier correctement le numéro du bit. Quand j'écris flags | 3, je pensais que cela définirait le 3ème bit, mais apparemment ça ne fonctionne pas comme ça. J'ai lu sur les masques de bits, mais je me suis embrouillé.

Dites-moi, s'il vous plaît, comment faire ?