~ (NÃO bit a bit)
resultado = ~a
O ~ é um operador unário (age sobre um único valor): ele vira todos os bits de cabeça pra baixo. Todo 0 vira 1 e todo 1 vira 0. É muito usado junto com o & pra montar máscaras que desligam bits específicos.
Sintaxe
resultado = ~a;
Parâmetros
- a: o valor inteiro cujos bits serão invertidos.
Retorno
Um inteiro com todos os bits de a trocados.
Exemplo
void setup() {
Serial.begin(9600);
byte flags = 0b00000101;
// desliga o bit 0 usando ~ + &
flags = flags & ~0b00000001; // 0b00000100 = 4
Serial.println(flags);
}
void loop() {}
Notas e cuidados
- Cuidado com o tipo:
~0em umintdo Uno dá -1 (todos os 16 bits ligados). O resultado depende do tamanho e do sinal do tipo. - Não confunda
~(bit a bit) com!(NÃO lógico):!xdevolve só verdadeiro/falso. - Ao mascarar um
byte, prefira deixar tudo embytepra não ligar bits altos sem querer.