Los operadores no tienen nada que ver con el lenguaje, así que es imposible explicarlos en Java, sólo puedo explicarlos (aunque en Google hay mil páginas, pero bueno, vaguete):
Operadores desplazamiento (>>, <<): desplazan n bits a la izquierda o derecha (multiplicas por 2^n o divides por 2^n respectivamente), rellenando con 0 el espacio vacío, por ejemplo:
- 10 >> 2 = 1010 >> 2 = 0010 = 2 
- 10 << 2 = 1010 >> 2 = 101000 = 40 
-   
: invierte los bits, por ejemplo:
- ~8 = ~1000 = 0111 = 7 
- ~10 = ~1010 = 0101 = 5 
-   
: realiza la función lógica sobre ambos operadores a nivel de bit.
- Función lógica &: 
- 0 & 0 = 0 
- 0 & 1 = 0 
- 1 & 0 = 0 
- 1 & 1 = 1 
-   
- Función lógica |: 
- 0 | 0 = 0 
- 0 | 1 = 1 
- 1 | 0 = 1 
- 1 | 1 = 1 
-   
- Función lógica ^: 
- 0 ^ 0 = 0 
- 0 ^ 1 = 1 
- 1 ^ 0 = 1 
- 1 ^ 1 = 0 
-   
Ejemplos:
- 10 & 6 = 1010 & 0110 
- 1010 
- 0110 
- ---- 
- 0010 = 2 
-   
- 10 | 6 = 1010 | 0110 
- 1010 
- 0110 
- ---- 
- 1110 = 14 
-   
- 10 ^ 6 = 1010 ^ 0110 
- 1010 
- 0110 
- ---- 
- 1100 = 12 
-   
Las operaciones de desplazamiento generalmente se usan en vez de las multiplicaciones cuando el factor es múltiplo de 2 ya que son mucho más rápidas. Las lógicas se utilizan para máscaras.