la prima condizione esclude 0, che non è ovviamente una potenza di 4 ma sarebbe errato passare le due seguenti prove. (MODIFICA: No, non lo farebbe, come sottolineato. Il primo test è ridondante.)
Il prossimo è un bel trucco: ritorna vero se e solo se il numero è un potere di 2. Una potenza di due è caratterizzata dal fatto di avere solo un bit impostato. Un numero con un bit impostato meno uno produce un numero con tutti i bit precedenti a quel bit impostato (ad esempio 0x1000 meno uno è 0x0111). E quei due numeri, e ottieni 0. In ogni altro caso (cioè non la potenza di 2), ci sarà almeno un bit che si sovrappone.
Quindi a questo punto, sappiamo che è una potenza di 2.
x & 0x55555555
rendimenti non-zero (= true) se del caso, anche Bit è impostato (bit 0, bit 2, bit 4, bit 6, ecc). Ciò significa che è il potere di 4. (cioè 2 non passa, ma 4 passaggi, 8 non passa, 16 passaggi, ecc.).
x & (x - 1) rimuove il 1 bit più basso da un numero. – starblue