C · Intermediário · Português · Técnico
máscara de bits
Valor inteiro usado com os operadores &, |, ^ e ~ para ligar, desligar, inverter ou testar bits individuais, comum em flags de opções e em registradores de hardware.
Onde usar
Aparece em APIs que combinam opções num único inteiro, como as flags de open, e em código embarcado. Em review se cobra parênteses, porque == tem precedência maior que &.
Em código
#include <stdio.h>
int main(void) {
unsigned f = 0;
f |= 1u << 3; // liga o bit 3
f &= ~(1u << 3); // desliga
f ^= 1u; // inverte o bit 0
if (f & 1u) puts("bit 0 ligado");
}Exemplos
Usa uma máscara de bits para guardar as permissões num único inteiro.
Faltou parêntese: o == roda antes do & na máscara.
Cuidado
Escrever if (x & MASK == 0): a comparação acontece antes do &, e o resultado não é o esperado.
Sinônimos
bitmask, flags