Os operadores de bits compostos realizam seus cálculos no nível de bit das variáveis. São freqüentemente utilizados para limpar ou marcar bits específicos.

Veja o operador de bits AND(&) e o operador de bits OR(|) para detalhes sobre seu funcionamento.

 

operador de bits composto AND (&=)

Descrição

O operador de bits composto AND (&=) é freqüentemente utilizado entre uma variável e uma constante para forçar que alguns bits em particular da variável sejam marcados como LOW (como 0). Este conceito aparece em manuais de programação como "limpeza" ou "resetting" de bits.

Sintaxe:

x &= y;   // equivalente a x = x & y; 

Parâmetros:

x: uma variável do tipo char, int ou long
y: uma constante do tipo char, int, ou long

Exemplo:

Primeiro, uma revisão do operador de bits AND (&)

   0  0  1  1    operando1
0 1 0 1 operando2
----------
0 0 0 1 (operando1 & operando2) - resultado de retorno

Bits que passam pelo operador AND um operando 0 são limpados para 0. Posrtanto se myByte é uma variável do tipo byte myByte & B00000000 = 0.

Bits que passam pelo operador AND com um operando 1 se matém como estão. Portanto myByte & B11111111 = myByte.

 

Consequentemente para limpar (marcar como zero) alguns  dos bits de uma variável deixando os demais como estão é só usar o operador de bits composto AND (&=) com uma constante por exemplo B11111100

   1  0  1  0  1  0  1  0    variável
1 1 1 1 1 1 0 0 máscara
----------------------
1 0 1 0 1 0 0 0

variável não modificada
bits limpos

Aqui está a mesma representação com os bits da variável subtituidos pelo símbolo x

   x  x  x  x  x  x  x  x    variável
1 1 1 1 1 1 0 0 máscara
----------------------
x x x x x x 0 0

variável não modificada
bits limpos

portato se:

myByte =  10101010;

myByte &= B1111100 == B10101000;

operador de bits composto OR (|=)

Descrição

O operador de bits composto OR (|=) é frequentemente utilizado entre uma variável e uma constatnte para forçar que alguns bits em particular sejam marcados como 1.

Sintaxe:

x |= y;   // equivalente a x = x | y; 

Parâmetros

x: uma variável do tipo char, int ou long
y: uma constante do tipo char, int, ou long

Exemplo:

First, a review of the Bitwise OR (|) operator

   0  0  1  1    operando1
0 1 0 1 operando2
----------
0 1 1 1 (operando1 | operando2) - resultado de retorno

Bits que passam pelo operador OR com um operando 0 são mantidos como estão, portanto se myByte é uma variável tipo byte,
myByte | B00000000 = myByte;

Bytes que passam pelo operador OR com um operando 1 são marcados com 1:
myByte & B11111111 = B11111111;

Consequentemente para marcar os bits 0 e 1 de uma variável deixando o restante sem mudanças use o operador de bits composto OR (|=) com a constante B00000011

   1  0  1  0  1  0  1  0    variável
0 0 0 0 0 0 1 1 máscara
----------------------
1 0 1 0 1 0 1 1

variiável não modificada
bits alterados


Aqui a mesma representação com as variáveis substituidas pelo símbolo x

   x  x  x  x  x  x  x  x    variável
0 0 0 0 0 0 1 1 máscara
----------------------
x x x x x x 1 1

variiável não modificada
bits alterados

So if:

myByte =  B10101010;

myByte |= B00000011 == B10101011;

See Also

  • & (bitwise AND)
  • | (bitwise OR)
  • && (Boolean AND)
  • || (Boolean OR)

 

Página de início da referência

Correções, sugestões, e nova documentação devem ser enviadas ao Forum.

O texto de referência do Arduino está baixo uma Licença Creative Commons Attribution-ShareAlike 3.0. Amostras de código utilizadas na referência foram deixados  ao domínio público.

 

O conteúdo desta página é uma tradução para o português a partir do site original do Arduino.

Esta obra está sob uma Licença Creative Commons.

Creative Commons License