Los siguientes operadores se usan para el manejo de bits:
<< (Desplazamiento de bits a la izquierda)
>> (Desplazamiento de bits a la derecha)
& (AND)
| (OR)
^ (XOR)
~ (NOT)
En tu caso en id2 no estas haciendo nada porque le estas desplazando 0 bits a la izquierda al uno, a diferencia de en id3 que le desplazas un bit a la izquierda quedando su valor en 2 por lo siguiente:
Si tienes 1 en binario se vería algo así:
0000001
Si lo desplazas un bit a la izquierda quedaría así:
0000010
Que en decimal sería el numero 2.
EDIT:
Puedes revisar este link para una mejor explicación:
http://c.conclase.net/curso/?cap=018