He escrito este código para comprobar qué bits son el de un entero (si está representado en binario) en Java:Qué bit está activado por un entero en 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;
}
El código escrito anterior funciona correctamente. Pero tiene un bucle que se ejecuta 32 veces (en Java el entero tiene 32 bits de longitud). Quiero minimizar esta complejidad. Por favor comparte la mejor solución. Gracias por adelantado.
¿Qué estás haciendo * con esa lista? ¿Tiene algún indicio de que esto realmente le esté causando problemas? –
Bueno, poner un límite en el número de bucles con "val"? Usted conoce el límite si conoce el int – keyser
¿Qué hay de malo en hacer que se repita 32 veces? Dado que hay 32 bits, me parece bastante razonable que para verificar cada bit, deberías repetir 32 veces. –