^ (XOR)
resultado = a ^ b
O ^ (XOR, ou "OU exclusivo") liga o bit do resultado quando os dois bits comparados são diferentes — um 0 e um 1. Se forem iguais, dá 0. Um truque muito útil dele é inverter bits específicos: fazer XOR com 1 vira o bit de cabeça pra baixo.
Sintaxe
resultado = a ^ b;
Parâmetros
- a, b: os dois valores inteiros cujos bits serão comparados.
Retorno
Um inteiro em que cada bit vale 1 quando os bits correspondentes de a e b são diferentes.
Exemplo
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
}
byte estado = 0;
void loop() {
// inverte o bit 0 a cada volta (pisca sem variável de flag extra)
estado = estado ^ 0b00000001;
digitalWrite(LED_BUILTIN, estado);
delay(500);
}
Notas e cuidados
x ^ xsempre dá 0 (todo bit é igual a si mesmo).- Fazer XOR duas vezes com o mesmo valor volta ao original — base de muitos truques e de cifras simples.
- Não é potência! Em C/C++ o
^é XOR; pra elevar usepow().