Dúvida com manipulação de bits

Estou com umas dúvidas sobre a manipulação de bits.

Por Exemplo:

[code]
int x = 1;

x << 3; // isso vai fazer que eu mova os bits 3 casas para a direita, certo ? 1 em binario = 0001 ficaria 1000 = 8 ?[/code]

E qual a diferença entre “>>> e >>>=” e “<< e <<=” ?

Valeu

http://java.sun.com/docs/books/tutorial/java/nutsandbolts/assignment.html

operator use            equivalent to
<<=      op1 <<= op2    op1 = op1 << op2
>>=      op1 >>= op2    op1 = op1 >> op2
>>>=     op1 >>>= op2   op1 = op1 >>> op2

aham, acho que você está confundindo “x << 3” com “x <<= 3”.

x << 3 é uma expressão, sem “efeito colateral”, ou seja, x não será alterado.

x <<= 3 é o equivalente de x = x << 3, ou seja, x << 3 é calculado, e então x é alterado (esse é o efeito colateral).

(Para certificação e outros quetais você deve saber que há algumas sutilezas, então x <<= 3 é quase equivalente mas não é exatamente a mesma coisa que x = x << 3, mas para o uso do dia a dia você pode considerar que é.)