Ho scritto questo codice per controllare che i bit sono su di un numero intero (se rappresentati in binario) in Java:Quale bit è avanti per un intero in Java
public static List<String> list(int val)
{
List<String> dummyList = new ArrayList<String>();
int bit = 1;
int x;
for(int i=0; i<32; i++)
{
x = bit;
if((x&val)!=0)
dummyList.add(String.valueOf(i+1));
bit = bit << 1;
}
return dummyList;
}
Il codice sopra scritto funzioni. Ma ha un ciclo che gira 32 volte (nel numero intero Java è lungo 32 bit). Voglio minimizzare questa complessità. Si prega di condividere la soluzione migliore. Grazie in anticipo.
Cosa stai * facendo * con quell'elenco? Hai qualche indicazione che questo ti stia effettivamente causando problemi? –
bene, metti un limite al numero di cicli usando "val"? Conosci il limite se conosci l'int – keyser
Cosa c'è di sbagliato nel farlo loop 32 volte? Dato che ci sono 32 bit, trovo abbastanza ragionevole che per controllare ogni bit si dovrebbe ciclo 32 volte. –