ok perfetto,
adesso vorrei capire bene il procedimento, vi faccio un esempio ditemi se è corretto

10000000 00000000 00000000 00000000 (displayMask)
00000000 00000000 11111101 11101000 (value)

da quanto ho capito il programma fa questo:
- ad ogni ciclo confronta il primo bit significativo di displayMask con il primo bit di value

quindi per c=1
10000000 00000000 00000000 00000000 (displayMask)
00000000 00000000 11111101 11101000 (value)

confronta i primi bit significativi e stampa 0
scorre value << 1
______________________________________________

per c=2
10000000 00000000 00000000 00000000 (displayMask)
00000000 00000001 11111011 11010000 (value)

confronta i primi bit significativi e stampa 00 (solo il primo bit a sinistra, il resto sono i bit stampati in precedenza)
scorre value << 1
______________________________________________

per c=17
10000000 00000000 00000000 00000000 (displayMask)
11111101 11101000 00000000 00000000 (value)

confronta i primi bit significativi e stampa 1 00000000 00000000
scorre value << 1
______________________________________________

è così? se si ma il numero non viene capovolto?
Se ho sbagliato vi prego, fatemi un esempio simile

Ps: grazie per l'aiuto