DEV Community

Os operadores de deslocamento e atribuições abreviadas bitwise

1. Operadores de Deslocamento de Bits

  • <<: Deslocamento para a esquerda.
  • >>: Deslocamento para a direita.
  • >>>: Deslocamento para a direita sem sinal (com preenchimento de zero).

2. Sintaxe Geral dos Operadores de Deslocamento
value << num-bits: Desloca os bits de value para a esquerda.
value >> num-bits: Desloca os bits de value para a direita, preservando o bit de sinal.
value >>> num-bits: Desloca os bits de value para a direita, inserindo zeros à esquerda.

3. Deslocamento para a Esquerda

  • Cada deslocamento para a esquerda faz todos os bits do valor serem deslocados uma posição para a esquerda.
  • Um bit 0 é inserido à direita.
  • Efeito: Multiplicação do valor por 2 a cada deslocamento.

4. Deslocamento para a Direita

  • Cada deslocamento para a direita move todos os bits uma posição para a direita.
  • O bit de sinal é preservado: 0 para valores positivos e 1 para valores negativos.
  • Efeito: Divisão do valor por 2 a cada deslocamento, com arredondamento para baixo.

5. Deslocamento para a Direita Sem Sinal (>>>)

  • Sem preservação do bit de sinal; insere 0 à esquerda.
  • Utilizado em padrões de bits onde o valor é tratado como um número sem sinal.

6. Deslocamento Não é Rotatório

  • Bits deslocados para fora são perdidos.
  • O deslocamento não permite a recuperação de bits deslocados para fora.

Exemplo:
De Deslocamento para a Esquerda e Direita
*ShiftDemo *

Cuidados ao Deslocar Valores byte e short

  • Java promove automaticamente byte e short para int ao avaliar uma expressão.

Exemplo:

  • Deslocando para a direita um valor byte negativo: ao ser promovido a int, os bits de ordem superior são preenchidos com 1.
  • No deslocamento para a direita com preenchimento de zeros (>>>), isso pode causar problemas, já que os 24 bits superiores serão 1 antes que zeros comecem a aparecer.

Atribuições Abreviadas com Operadores Bitwise

  • Todos os operadores bitwise binários têm uma forma abreviada que combina uma atribuição com a operação bitwise.

Exemplo

x = x ^ 127;
x ^= 127;

Enter fullscreen mode Exit fullscreen mode

Image description

Top comments (0)