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

&

[Bitwise Operators]

Descrição

O operador bitwise E em C++ é um único & (e comercial ou ampersand), usado entre duas expressões inteiras. O operador E bit-a-bit atua em cada bit dos operandos independentemente, de acordo com a seguinte regra: se ambas entradas são 1, a saída resultante é 1, do contrário o resultado é 0.

Outra forma de se expressão isso é:

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

No Arduino, o tipo int é um valor 16-bit, então & usado entre dois operandos do tipo int causa 16 operações bit-a-bit E simultâneas.

Código de Exemplo

Em um fragmento de código do tipo:

int a =  92;    // em binário: 0000000001011100
int b = 101;    // em binário: 0000000001100101
int c = a & b;  // resultado:    0000000001000100, ou 68 em decimal.

Cada um dos 16 bits em a e b são processados com o operador &, e todos os 16 bits resultantes são armazenados em c, resultando no valor binário 01000100, que é 68 em decimal.

Um dos usos mais comuns da operação bit-a-bit E é selecionar um bit particular (ou bits) de um valor inteiro, frequentemente chamado de masking. Veja abaixo um exemplo (específico para arquitetura AVR):

PORTD = PORTD & B00000011;  // apaga os bits 2 - 7, deixando o valor dos pinos PD0 e PD1 intocados (xx & 11 == xx)

Ver Também

LINGUAGEM && E lógico