Operadores em linguagem C
7. O que são Bitwise Operatores?
Bit a bit Operatoros são usados para manipular dados em nível de bit, também chamado de programação em nível de bit. Bitwise opera em um ou mais padrões de bits ou números binários no nível de seus bits individuais. Eles são usados em cálculos numéricos para tornar o processo de cálculo mais rápido.
Bit a bit Operatores em C: AND, OR, XOR, Shift & Complemento
A seguir está a lista de operadores bit a bit fornecidos pela linguagem de programação 'C':
| Operator | Significado |
|---|---|
| & | Operador AND(e) bit a bit |
| | | Operador OR(ou) bit a bit |
| ^ | Operador XOR(ou exclusivo) bit a bit |
| ~ | Complemento de Binário Operator é um operador unário |
| << | Operador de turno à esquerda |
| >> | Operador de deslocamento para a direita |
Os operadores bit a bit não podem ser aplicados diretamente a tipos de dados primitivos, como float, double, etc. Lembre-se sempre de que os operadores bit a bit são usados principalmente com o tipo de dados inteiro devido à sua compatibilidade.
Os operadores lógicos bit a bit trabalham nos dados bit a bit, começando pelo bit menos significativo, ou seja, o bit LSB que é o bit mais à direita, trabalhando em direção ao MSB (Most Significant Bit) que é o bit mais à esquerda.
O resultado do cálculo dos operadores lógicos bit a bit é mostrado na tabela abaixo.
| x | y | x e y | x | y | x^y |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
7,1 - AND bit a bit
Este é um dos operadores lógicos bit a bit mais comumente usados. Ele é representado por um único sinal de E comercial (&). Duas expressões inteiras são escritas em cada lado do operador (&).
O resultado da operação AND bit a bit é 1 se ambos os bits tiverem o valor 1; caso contrário, o resultado será sempre 0.
Vamos considerar que temos 2 variáveis op1 e op2 com valores como segue:
Op2 = 0001 1001
O resultado da operação AND nas variáveis op1 e op2 será
Como podemos ver, duas variáveis são comparadas pouco a pouco. Sempre que o valor de um bit em uma das variáveis for 1, o resultado será 1 ou então 0.
7.2 - OR bit a bit
É representado por um único sinal de barra vertical (|). Duas expressões inteiras são escritas em cada lado do operador (|).
O resultado da operação OR bit a bit é 1 se pelo menos uma das expressões tiver o valor 1; caso contrário, o resultado será sempre 0.
Vamos considerar que temos 2 variáveis op1 e op2 com valores como segue:
Op2 = 0001 1001
O resultado da operação OR nas variáveis op1 e op2 será
Como podemos ver, duas variáveis são comparadas pouco a pouco. Sempre que o valor de um bit em ambas as variáveis for 1, o resultado será 1 ou então 0.
7.3 - OU Exclusivo bit a bit
É representado por um símbolo (^). Duas expressões inteiras são escritas em cada lado do operador (^).
O resultado da operação OR exclusivo bit a bit é 1 se apenas uma das expressões tiver o valor 1; caso contrário, o resultado será sempre 0.
Vamos considerar que temos 2 variáveis op1 e op2 com valores como segue:
Op2 = 0001 1001
O resultado da operação XOR nas variáveis op1 e op2 será
Como podemos ver, duas variáveis são comparadas pouco a pouco. Sempre que apenas uma variável mantém o valor 1, o resultado é 0, caso contrário, 0 será o resultado.
Listagem 01 - Operadores Lógicos bit a bit.
- 1 #include <stdio.h>
- 2 int main()
- 3 {
- 4 int a = 20; /* 20 = 010100 */
- 5 int b = 21; /* 21 = 010101 */
- 6 int c = 0;
- 7
- 8 c = a & b; /* 20 = 010100 */
- 9 printf("AND - Valor de c é %d\n", c );
- 10
- 11 c = a | b; /* 21 = 010101 */
- 12 printf("OR - Valor de c é %d\n", c );
- 13
- 14 c = a ^ b; /* 1 = 0001 */
- 15 printf("Exclusive-OR - Valor de c é %d\n", c );
- 16
- 17 getch();
- 18 }
- Saída: li>
- AND - Valor de c é 20
- OR - Valor de c é 21
- Exclusive-OR - Valor de c é 1