un unsigned int ha 32 bit, 1<<31 setta a 1 il bit più alto:
10000000 00000000 00000000 00000000
Confrontando questa "maschera" con un quasiasi numero con & si controlla se il bit più alto è settato:
10000000 00000000 00000000 00000000
&
10100000 00001100 01001000 00011100
-----------------------------------------------
10000000 00000000 00000000 00000000
10000000 00000000 00000000 00000000
&
00100010 00001100 01001000 00011100
-----------------------------------------------
00000000 00000000 00000000 00000000
Con questo meccanismo si controlla il primo bit e si stampa 1 o 0 a seconda del suo valore, value<<=1 ad ogni ciclo sposta a sinistra i valori per cui un numero quale:
1) 10100000 00001100 01001000 00011100
2) 01000000 00011000 10010000 00111000
3) 10000000 00110001 00100000 01110000
...