Ciao a tutti, qualcuno potrebbe spiegarmi brevemente cosa fa questo ciclo for??

codice:
    for(i=SIZE-1; i>=0; i--)
    {
        bit[i] = (valore & 1);
        valore >>= 1;
    }
Il "valore" equivale ad un qualsiasi numero float, rappresentato tramite una union in intero. SIZE equivale a 32,il numero di bit su cui si vuole rappresentare il numero.
Gli operatori & e >> so cosa sono e anke a che servono, ma non capisco l'utilità in questa fase che sembra essere la piu importante di tutta la funzione.

GRAZIE!