~ (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: ~0 em um int do 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): !x devolve só verdadeiro/falso.
  • Ao mascarar um byte, prefira deixar tudo em byte pra não ligar bits altos sem querer.

Quer aprender a usar isso em projetos reais, do zero?

Conhecer o Curso Maker