Pra que servem estes operadores

3 respostas
nego_henry

eu vi em uma apostila aqui os operadores
>>
e
<<

pra que servem?

3 Respostas

Marck

Olá

Cara, dá uma procurada sobre operadores bit-a-bit. Tem bastante coisa ai no fórum.

Att,
Marck

nego_henry

valeu galera!!! valeu mesmo

Victor_Yuji_Maehira

Bom dia!
Esse operadores são deslocadores de bits (texto extraído de http://www.javafree.org/javabb/viewtopic.jbb?t=6944):
Deslocamento a direita com sinal ( >> )

int x = 16;
x = x >> 2;

A variável x estará armazenando ao final da linha de código anterior o valor 4 ! O que o código anterior faz é simplesmente descolar dois bits para a direita, assim temos:

x antes do deslocamento

0000 0000 0000 0000 0000 0000 0001 0000 (base 2)
16 (base 10)

x depois do deslocamento

0000 0000 0000 0000 0000 0000 0000 0100 (base 2)
4 (base 10)

O sinal sempre será mantido com esse operador. Um regra bem simples é que quando se desloca à direita é o mesmo que aplicar a seguinte regra matemática:

Para o caso anterior:
Fórmula: 16 dividido por 2 elevado a x (onde x é a quantidade de bits a deslocar)

Deslocamento a esquerda com sinal ( << )

int x = 16;
x = x << 2;

x antes do deslocamento

0000 0000 0000 0000 0000 0000 0001 0000 (base 2)
16 (base 10)

x depois do deslocamento

0000 0000 0000 0000 0000 0000 0100 0000 (base 2)
64 (base 10)

Outra regrinha que você já deve ter deduzido é:
Fórmula: 16 multiplicado por 2 elevado a x (onde x é a quantidade de bits a deslocar)

Observe o comportamento em caso de número negativos:

int x = -200;
x <<= 3;

O resultado de x será: -1600

Note que o sinal é mantido, observe o deslocamento dos bits:

1000 0000 0000 0000 0000 0000 1100 1000 equivale a -200

Após o deslocamento:

1000 0000 0000 0000 0000 0110 0100 0000 equivale a -1600

Criado 30 de janeiro de 2007
Ultima resposta 30 de jan. de 2007
Respostas 3
Participantes 3