Esta página também está disponível em outros 2 idiomas.

^

[Bitwise Operators]

Descrição

Na linguagem C++ existe um operador um pouco incomum chamado de OU EXCLUSIVO, também conhecido como XOR (Em Inglês é pronunciado "eks-or"), bit-a-bit. O operador XOR bitwise é escrito usando-se o símbolo ^. Uma operação XOR bit-a-bit resulta em 1 apenas se os bits de entrada são diferentes. Se iguais, o resultado é zero.

Precisamente,

0  0  1  1    operando1
0  1  0  1    operando2
----------
0  1  1  0    (operando1 ^ operando2) - resultado retornado

Código de Exemplo

int x = 12;     // binário: 1100
int y = 10;     // binário: 1010
int z = x ^ y;  // binário: 0110, ou decimal 6

O operador ^ é frequentemente utilizado para trocar (isto é, mudar de 0 para 1, ou 1 para 0) alguns dos bits em uma expressão inteira. Em uma operação XOR se há um 1 no bit da máscara, aquele bit é invertido; se há um 0, o bit não é invertido e continua o mesmo.

// Nota: Esse código usa registradores específicos para microcontroladores AVR (Uno, Nano, Leonardo, Mega, etc.)
// Ele não irá compilar para outras arquiteturas
void setup(){
  DDRB = DDRB | B00100000; // configura PB5 (pino 13 no Uno/Nano, pino 9 no Leonardo/Micro, pino 11 no Mega) como OUTPUT
  Serial.begin(9600);
}

void loop(){
PORTB = PORTB ^ B00100000;  // inverte PB5, deixa os outros bits intocados
delay(100);
}

Ver Também