Avatar ·

Cómo establecer, borrar y cambiar un bit individual en C++?

¡Hola! Estoy escribiendo un programa para un microcontrolador en C++ y trabajo con registros. Necesito gestionar bits individuales: establecerlos en 1, borrarlos a 0 y cambiarlos (invertir). Sé que esto se hace con operaciones de bits, pero siempre me confundo con la sintaxis. Por ejemplo, tengo una variable `uint8_t flags = 0b00001111;`. Quiero: 1. Establecer el bit 3 (contando desde cero) en 1. 2. Borrar el bit 2 a 0. 3. Cambiar el bit 1 (si 1 → 0, si 0 → 1). Por ahora lo hago así: ```cpp uint8_t flags = 0b00001111; // Establecer bit 3 flags = flags | 0b00001000; // Funciona, pero es incómodo // Borrar bit 2 flags = flags & 0b11111011; // Siempre me equivoco en la máscara // Cambiar bit 1 flags = flags ^ 0b00000010; // Parece que funciona ``` Preguntas: - ¿Existen macros o funciones estándar para esto? - ¿Cómo se numeran correctamente los bits (desde cero o desde uno)? - ¿Se puede evitar el cálculo manual de las máscaras? Leí en Stack Overflow, pero los ejemplos son en C, y necesito