Esta página também está disponível em outros 2 idiomas.

>>

[Bitwise Operators]

Descrição

O operador de deslocamento à direita >> faz os bits do operando à esquerda do operador serem deslocados à direita pelo número de posições especificadas pelo operando à direita do operador.

Sintaxe

variável << numero_de_bits;

Parâmetros

variável: Tipos de dados permitidos: byte, int, long
numero_de_bits: um número menor ou igual 32. Tipos de dados permitidos: int

Código de Exemplo

int a = 40;     // binário: 0000000000101000
int b = a >> 3; // binário: 0000000000000101, ou 5 em decimal

Notas e Advertências

Quando você desloca x à direita por y bits (x >> y), e o bit mais significativo em x é 1, o comportamento depende do tipo de dado de x. Se x é do tipo int, o bit mais significativo é o bit de sinal, determinando se x é negativo ou não, como pode ser visto com detalhes na página do tipo de dado int. Nesse caso, o bit de sinal é copiado para os bits menos significativos quando o valor é deslocado, por razões históricas:

int x = -16;  // binário: 1111111111110000
int y = 3;
int resultado = x >> y;  // binário: 1111111111111110

Esse comportamento, chamado extensão do sinal, é frequentemente indesejável. Em vez disso, você pode quere que zeros sejam deslocados da esquerda. Acontece que as regras do deslocamento à direita são diferentes para expressões unsigned int, estão você pode usar casting para impedir que uns sejam copiados da esquerda:

int x = -16;  // binário: 1111111111110000
int y = 3;
int resultado = (unsigned int)x >> y;  // binário: 0001111111111110

Se você for cuidadoso para evitar a extensão do sinal, você pode usar o operador de deslocamento à direita >> como uma forma de dividir por potências de 2. Por exemplo:

int x = 1000;
int y = x >> 3; // divisão inteira de 1000 por 8, resultando em y = 125.

Ver Também