Avatar ·

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

Bonjour ! J'écris un programme pour microcontrôleur en C++ et je travaille avec des registres. J'ai besoin de gérer des bits individuels : les définir à 1, les réinitialiser à 0 et les basculer (inverser). Je sais que cela se fait avec des opérations bit à bit, mais je confonds constamment la syntaxe. Par exemple, j'ai une variable `uint8_t flags = 0b00001111;`. Je veux : 1. Définir le 3ème bit (en comptant à partir de zéro) à 1. 2. Réinitialiser le 2ème bit à 0. 3. Basculer le 1er bit (si 1 → 0, si 0 → 1). Pour l'instant, je fais comme ça : ```cpp uint8_t flags = 0b00001111; // Définir le bit 3 flags = flags | 0b00001000; // Ça marche, mais pas pratique // Réinitialiser le bit 2 flags = flags & 0b11111011; // Je fais constamment des erreurs dans le masque // Basculer le bit 1 flags = flags ^ 0b00000010; // Ça a l'air de marcher ``` Questions : - Existe-t-il des macros ou fonctions couramment utilisées pour cela ? - Comment numéroter correctement les bits (à partir de zéro ou de un) ? - Peut-on éviter de calculer manuellement les masques ? J'ai lu sur Stack Overflow, mais les exemples sont en C, alors que j'ai besoin