Cómo establecer, limpiar y alternar un bit individual en C++
¡Hola a todos! Soy un desarrollador principiante de C++ y me encontré con un problema al trabajar con bits. Necesito manipular bits individuales en un número entero, pero no puedo entender cómo hacerlo correctamente.
Tengo una variable uint8_t flags = 0b00000000;. Quiero:
- Establecer el 3er bit (ponerlo en 1)
- Limpiar el 5to bit (ponerlo en 0)
- Alternar el 2do bit (invertir su valor)
Intenté escribir este código:
uint8_t flags = 0b00000000;
// Establecer el 3er bit
flags = flags | 3; // Pero esto no funciona
// Limpiar el 5to bit
flags = flags & 5; // Tampoco es correcto
// Alternar el 2do bit
flags = flags ^ 2; // Parece que funciona, pero no estoy seguro
El problema es que no entiendo cómo especificar correctamente el número de bit. Cuando escribo flags | 3, pensé que esto establecería el 3er bit, pero aparentemente no funciona así. He leído sobre máscaras de bits, pero me confundí con ellas.
Por favor, indíquenme cómo hacerlo correctamente.