Avatar ·

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

Hallo zusammen! Ich bin ein C++-Anfänger und habe ein Problem bei der Arbeit mit Bits. Ich muss einzelne Bits in einer ganzen Zahl verwalten, verstehe aber nicht, wie das richtig geht.

Ich habe eine Variable uint8_t flags = 0b00000000;. Ich möchte:

  • Das 3. Bit setzen (auf 1 setzen)
  • Das 5. Bit löschen (auf 0 setzen)
  • Das 2. Bit toggeln (seinen Wert invertieren)

Ich habe versucht, diesen Code zu schreiben:

uint8_t flags = 0b00000000;
// 3. Bit setzen
flags = flags | 3;  // Aber das funktioniert nicht
// 5. Bit löschen
flags = flags & 5;  // Auch nicht richtig
// 2. Bit toggeln
flags = flags ^ 2;  // Scheint zu funktionieren, bin mir aber nicht sicher

Das Problem ist, dass ich nicht verstehe, wie man die Bitnummer richtig angibt. Wenn ich flags | 3 schreibe, dachte ich, dass das das 3. Bit setzt, aber offenbar funktioniert das nicht so. Ich habe über Bitmasken gelesen, bin aber verwirrt.

Könnt ihr mir bitte helfen?