Operadores &lt&lt e &gt&gt

7 respostas
D

Olá!!

Gostaria de saber para que serve os operadoes << e >>.

Fiz alguns testes, mas não consegui entender ainda o q eles fazem.

Por exemplo:

int i;
int x;

i = 10;
x = i << 2;

System.out.print(x);

Isso me retorna o valor 40!!
Se eu substituir o valor 2 por 3, me retorna 80!!

Outro exemplo:

int i;
int x;

i = 10;
x = i >> 2;

System.out.print(x);

Isso me retorna o valor 2!!
Se eu substituir o valor 2 por 3, me retorna 1!!

Qual é a lógica??? :lol:

7 Respostas

Foxlol

Eu só sei que são operadores de deslocamento de bits, mas sinceramente, ateh hj naum compreendi como utilizar e pra que tbm.

Se alguém poder dar uma explicação bem clara e um exemplo útil de uso seria bom.

Vlw

D

Foxlol!!

É isso mesmo!!!

Agora entendi!!

Por exemplo, qdo uso 10 << 2, estou pedindo para deslocar 2 bits para a esquerda, assim:

10 = 1010 (binário)

deslocando 2 bits para a direita, fica:

101000 = 40 (decimal)

o inverso tb é verdade (10 >> 2):

10 (binário) = 2 (decimal)

É isso ae!! :slight_smile:

javaBeats

Sim, são operadores de deslocamento de bits.

Um int tem 4 bytes, e portanto, 32 bits. Num exemplo prático, temos as cores no OpenGL, onde você pode armazenar informação de cor em um inteiro, separando cada valor (R, G, B e A) em grupos de 8 bits. Para armazenar uma cor em um único int, você pode usar o AND e o &lt&lt:

public int getAsRgb(int a, int r, int g, int b) {
        return ((a & 0xFF) &lt&lt 24) | ((r & 0xFF) &lt&lt 16) |
                ((g & 0xFF) &lt&lt  8) | ((b & 0xFF) &lt&lt  0);
}

That’s it :wink:

Foxlol

Ahhh agora tbm entendi hehehe

=D

Halisoft

&lt&lt deslocamento de bits à esquerda ( multiplicação por dois )
&gt&gt deslocamento de bits à direita ( divisão truncada por dois )

francisco.rodrigues

Ai vai uma dica que peguei no livro da Kathy Sierra:

O operador << (deslocamento à esquerda) multiplica o número a ser deslocado por 2 à pontencia da qtde de bits a deslocar

int i; 
int x; 

i = 10; 
x = i &lt&lt 2; 

          2
x = 10 * 2 
x = 10 * 4
x = 40

O operador >> (deslocamento à direita) divide o número a ser deslocado por 2 à pontencia da qtde de bits a deslocar.

int i; 
int x; 

i = 10; 
x = i &gt&gt 2; 

          2
x = 10 / 2
x = 10 / 4
x = 2

Francisco

T

x &gt&gt y é a mesma coisa que x / (2 elevado a y), mas só para números positivos.

Para números negativos, o resultado é um pouco diferente:

-1 &gt&gt 1 == -1;

mas (-1) / 2 == 0.

Criado 14 de setembro de 2006
Ultima resposta 14 de set. de 2006
Respostas 7
Participantes 6