& (E bit a bit)

resultado = a & b

Enquanto o && trabalha com verdadeiro/falso, o & trabalha bit por bit dentro dos números. Ele olha cada par de bits e só devolve 1 quando os dois são 1. Isso é ótimo pra isolar (mascarar) bits específicos de um valor — por exemplo, ler só os 4 bits de baixo de uma porta.

Sintaxe

resultado = a & b;

Parâmetros

  • a, b: os dois valores inteiros (int, byte, long, etc.) cujos bits serão comparados.

Retorno

Um inteiro em que cada bit vale 1 apenas quando o bit correspondente de a e de b também vale 1.

Exemplo

void setup() {
  Serial.begin(9600);

  byte valor = 0b10110101; // 181
  byte mascara = 0b00001111;

  // guarda apenas os 4 bits de baixo
  byte baixos = valor & mascara; // 0b0101 = 5
  Serial.println(baixos);
}

void loop() {}

Notas e cuidados

  • Não confunda & (bit a bit) com && (E lógico): trocar um pelo outro compila mas dá resultado errado.
  • É a operação clássica pra testar se um bit está ligado: if (valor & 0b00000100) { ... }.
  • Funciona bit a bit em todos os bits do tipo, então byte tem 8 bits e int no Uno tem 16.

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

Conhecer o Curso Maker