I flags di memoria utilizzano bit all'interno di un numero intero di 64 bit.
Voglio sapere se c'è un unico set po 'qualunque sia la posizione all'interno del intero a 64 bit (E.I. non mi interessa circa la posizione di qualsiasi specifico bit).Verificare se è impostato un solo bit all'interno di un numero intero (qualunque sia la sua posizione)
boolean isOneSingleBitSet (long integer64)
{
return ....;
}
potevo contare il numero di bit che utilizzano il Bit Twiddling Hacks (by Sean Eron Anderson), ma mi chiedo qual è il modo più efficace per rilevare solo se un singolo bit è impostato ...
ho trovato alcune altre questioni correlate:
e anche alcune pagine di Wikipedia:
NB: la mia domanda è in Java, ma sono curioso di ottimizzazioni usando altre lingue ...
EDIT: Lưu Vĩnh Phúc ha sottolineato che il mio primo collegamento all'interno della mia domanda ha già ottenuto la risposta: vedere la sezione Determining if an integer is a power of 2 nel Bit Twiddling Hacks (di Sean Eron Anderson). Non mi sono reso conto che un singolo bit era lo stesso di potenza di due.
Per Java, prenderei in considerazione l'utilizzo della classe BitSet per questo scopo che supporta il metodo isEmpty() e molti altri che semplificano l'uso dei flag di bit. – maximdim
è già in Bit Twiddling Hacks collegato sopra: [Determinare se un numero intero è una potenza di 2] (http://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2) –
Oh! Grazie :-) Aggiorno la mia domanda :-) Saluti – olibre