almhp.com

Operadores em linguagem C

8. Operadores de deslocamento bit a bit

Os operadores de deslocamento bit a bit são usados ​​para mover/deslocar os padrões de bits para o lado esquerdo ou direito. Esquerda e direita são dois operadores de turno fornecidos por 'C' que são representados da seguinte forma:

Operand << n (Left Shift)
Operand >> n (Right Shift)

Aqui,

  • um operando é uma expressão inteira na qual devemos realizar a operação de deslocamento.
  • 'n' é o número total de posições de bits que precisamos mudar na expressão inteira.

A operação de deslocamento para a esquerda deslocará o número 'n' de bits para o lado esquerdo. Os bits mais à esquerda na expressão serão exibidos e n bits com o valor 0 serão preenchidos no lado direito.

A operação de deslocamento para a direita deslocará o número 'n' de bits para o lado direito. Os 'n' bits mais à direita da expressão serão exibidos e o valor 0 será preenchido no lado esquerdo.

Exemplo: x é uma expressão inteira com dados 1111. Após realizar a operação shift o resultado será:

x <<2 (left shift) = 1111 <<2 = 1100
x >>2 (right shift) = 1111 >>2 = 0011

Os operadores podem ser combinados e então podem ser usados ​​para extrair os dados da expressão inteira.

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 02 - Operadores de Deslocamento bit a bit.

  • 1 #include <stdio.h>
  • 2 int main() {
  • 3     int a = 20;      /* 20 = 010100 */
  • 4     int c = 0;
  • 5
  • 7     c = a <<2;      /* 80 = 101000 */
  • 8     printf("Left shift - Valor de c é %d\n", c );
  • 9
  • 10     c = >> 2;      /*5 = 000101 */
  • 11     printf("Right shift - Valor de c é %d\n", c );
  • 12 return 0;
  • 13 }

  • Saída:
  • Left shift - Valor de c é 80
  • Right shift - Valor de c é 5

Após realizar a operação de deslocamento para a esquerda o valor se tornará 80 cujo equivalente binário é 101000.

Após realizar a operação de deslocamento para a direita, o valor passará a ser 5 cujo equivalente binário é 000101.

8.1 - Operador de complemento bit a bit

O complemento bit a bit também é chamado de operador de complemento, pois sempre leva apenas um valor ou um operando. É um operador unário.

Quando realizamos complemento em qualquer bit, todos os 1 se tornam 0 e vice-versa.

Se tivermos uma expressão inteira que contém 0000 1111, depois de realizar a operação de complemento bit a bit, o valor se tornará 1111 0000.

O operador de complemento bit a bit é denotado pelo símbolo til (~).

Listagem 03 - Operador de Complemento bit a bit.

  • 1 #include <stdio.h>
  • 2 int main() {
  • 3     int a = 10;      /* 10 = 1010 */
  • 4     int c = 0;
  • 5     c = ~(a);
  • 6     printf("Complement - Valor de c é %d\n", c );
  • 7 return 0;
  • 8 }

  • Saída:
  • Complement - Valor de c é -11

Listagem 04 - Aqui um exemplo prático das operações discutidas até agora:

  • 1 #include <stdio.h>
  • 2 int main() {
  • 3     unsigned int x = 48;    /* 48 = 0011 0000 */
  • 4     unsigned int y = 13;    /* 13 = 0000 1101 */
  • 5     int z = 0;
  • 6
  • 7     z =x & y;    /* 0 = 0000 0000 */
  • 8     printf("Bitwise AND Operator - x & y = %d\n", z );
  • 9
  • 10      z = x | y;    /* 61 = 0011 1101 */
  • 11      printf("Bitwise OR Operator - x | y = %d\n", z );
  • 12
  • 13      z= x^y;    /* 61 = 0011 1101 */
  • 14      printf("Bitwise XOR Operator- x^y= %d\n", z);
  • 15
  • 16      z = ~x;     /*-49 = 11001111 */
  • 17      printf("Bitwise One's Complement Operator - ~x = %d\n", z);
  • 18
  • 19      z = x << 2;     /* 192 = 1100 0000 */
  • 20      printf("Bitwise Left Shift Operator x << 2= %d\n", z );
  • 21
  • 22      z= x >> 2;     /* 12 = 0000 1100 */
  • 23      printf ("Bitwise Right Shift Operator x >> 2= %d\n", z );
  • 24 }

Depois de compilado e executado o programa, teremos o seguinte resultado:

  • Saída:
  • Bitwise AND Operator - x & y = 0
  • Bitwise OR Operator - x | y = 61
  • Bitwise XOR Operator- x^y= 61
  • Bitwise One's Complement Operator - ~x = -49
  • Bitwise Left Shift Operator x << 2= 192
  • Bitwise Right Shift Operator x >> 2= 12

Resumo

  • Operadores bit a bit são conjuntos de operadores especiais fornecidos por 'C.'
  • Eles são usados ​​na programação em nível de bit.
  • Esses operadores são usados ​​para manipular bits de uma expressão inteira.
  • Lógico, deslocamento e complemento são três tipos de operadores bit a bit.
  • O operador de complemento bit a bit é usado para reverter os bits de uma expressão.


Fale conosco
Antônio Almeida
tonical2k11@gmail.com