Operadores bit a bit C
Os operadores bit a bit executam as operações AND bit a bit (&
), OR exclusivo bit a bit (^
) e OR inclusivo bit a bit (|
).
Sintaxe
AND-expression
:
equality-expression
AND-expression
&
equality-expression
exclusive-OR-expression
:
AND-expression
exclusive-OR-expression
^
AND-expression
inclusive-OR-expression
:
exclusive-OR-expression
inclusive-OR-expression
|
exclusive-OR-expression
Os operandos dos operadores bit a bit devem ter tipos integrais, mas seus tipos podem ser diferentes. Esses operadores executam conversões aritméticas comuns; o tipo do resultado é o tipo dos operandos após a conversão.
Os operadores bit a bit de C são descritos abaixo:
Operador | Descrição |
---|---|
& |
O operador AND bit a bit compara cada bit do primeiro operando com o bit correspondente de seu segundo operando. Se ambos os bits forem 1, o bit de resultado correspondente será definido como 1. Caso contrário, o bit de resultado correspondente é definido como zero (0). |
^ |
O operador OR exclusivo bit a bit compara cada bit do primeiro operando ao bit correspondente do seu segundo operando. Se um bit for 0 e o outro bit for 1, o bit de resultado correspondente será definido como 1. Caso contrário, o bit de resultado correspondente é definido como zero (0). |
| |
O operador OR inclusivo bit a bit compara cada bit do primeiro operando com o bit correspondente de seu segundo operando. Se qualquer bit for 1, o bit de resultado correspondente será definido como 1. Caso contrário, o bit de resultado correspondente é definido como zero (0). |
Exemplos
Essas declarações são usadas para os três exemplos a seguir:
short i = 0xAB00;
short j = 0xABCD;
short n;
n = i & j;
O resultado atribuído a n
neste primeiro exemplo é o mesmo que i
(0xAB00 hexadecimal).
n = i | j;
n = i ^ j;
O operador OR inclusivo bit a bit no segundo exemplo resulta no valor 0xABCD (hexadecimal), enquanto o OU exclusivo bit a bit no terceiro exemplo gerencia 0xCD (hexadecimal).
Seção específica da Microsoft
O resultado de operação bit a bit em números inteiros assinados é definido pela implementação de acordo com o padrão C. Para o compilador C da Microsoft, as operações bit a bit em números inteiros assinados funcionam da mesma forma que as operações bit a bit em inteiros não assinados. Por exemplo, -16 & 99
pode ser expresso em binário como
11111111 11110000
& 00000000 01100011
_________________
00000000 01100000
O resultado do E bit a bit é decimal 96.
Fim da seção específica da Microsoft
Confira também
Operador bit a bit AND: &
Operador OR exclusivo bit a bit: ^
Operador OR inclusivo bit a bit: |