Avatar ·

Como definir, limpar e alternar um bit individual em C++?

Olá! Estou escrevendo um programa para microcontrolador em C++ e trabalhando com registradores. Preciso gerenciar bits individuais: defini-los como 1, limpá-los para 0 e alterná-los (inverter). Sei que isso é feito com operações bit a bit, mas sempre me confundo com a sintaxe. Por exemplo, tenho uma variável `uint8_t flags = 0b00001111;`. Quero: 1. Definir o 3º bit (contando a partir de zero) como 1. 2. Limpar o 2º bit para 0. 3. Alternar o 1º bit (se 1 → 0, se 0 → 1). Atualmente faço assim: ```cpp uint8_t flags = 0b00001111; // Definir bit 3 flags = flags | 0b00001000; // Funciona, mas é inconveniente // Limpar bit 2 flags = flags & 0b11111011; // Sempre erro na máscara // Alternar bit 1 flags = flags ^ 0b00000010; // Parece funcionar ``` Perguntas: - Existem macros ou funções padrão amplamente aceitas para isso?