Avatar ·

Wie setzt, löscht und toggelt man ein einzelnes Bit in C++?

Hallo! Ich schreibe ein Programm für einen Mikrocontroller in C++ und arbeite mit Registern. Ich muss einzelne Bits steuern: sie auf 1 setzen, auf 0 löschen und toggeln (invertieren). Ich weiß, dass dies mit bitweisen Operationen gemacht wird, aber ich verwechsle ständig die Syntax. Zum Beispiel habe ich eine Variable `uint8_t flags = 0b00001111;`. Ich möchte: 1. Bit 3 (von Null aus gezählt) auf 1 setzen. 2. Bit 2 auf 0 löschen. 3. Bit 1 toggeln (wenn 1 → 0, wenn 0 → 1). Bisher mache ich es so: ```cpp uint8_t flags = 0b00001111; // Bit 3 setzen flags = flags | 0b00001000; // Funktioniert, aber unbequem // Bit 2 löschen flags = flags & 0b11111011; // Ich mache ständig Fehler in der Maske // Bit 1 toggeln flags = flags ^ 0b00000010; // Scheint zu funktionieren ``` Fragen: - Gibt es allgemein übliche Makros oder Funktionen dafür? - Wie nummeriert man Bits richtig (von Null oder von Eins)? - Kann man irgendwie vermeiden, Masken manuell zu berechnen? Ich habe auf Stack Overflow gelesen, aber dort sind die Beispiele in C, ich brauche