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