Como definir, limpar e alternar um bit individual em C++?
Olá a todos! Sou um desenvolvedor C++ iniciante e encontrei um problema ao trabalhar com bits. Preciso gerenciar bits individuais em um número inteiro, mas não consigo entender como fazer isso corretamente.
Tenho uma variável uint8_t flags = 0b00000000;. Quero:
- Definir o 3º bit (torná-lo 1)
- Limpar o 5º bit (torná-lo 0)
- Alternar o 2º bit (inverter seu valor)
Tentei escrever o seguinte código:
uint8_t flags = 0b00000000;
// Definir o 3º bit
flags = flags | 3; // Mas isso não funciona
// Limpar o 5º bit
flags = flags & 5; // Também não é isso
// Alternar o 2º bit
flags = flags ^ 2; // Parece funcionar, mas não tenho certeza
O problema é que não entendo como especificar corretamente o número do bit. Quando escrevo flags | 3, pensei que isso definiria o 3º bit, mas aparentemente não funciona assim. Li sobre máscaras de bits, mas fiquei confuso com elas.
Por favor, me ajudem.
No answers yet.
Faça login para deixar uma resposta
Blogs