Si tengo un número un, quiero que el valor de x en b = 2^x, donde b es la siguiente potencia de 2 mayor que a.Una manera rápida de encontrar exponente de la más cercana poder superior de 2
En caso de que haya perdido la etiqueta, esto es Java, y a es un int. Estoy buscando la manera más rápida de hacer esto. Mi solución hasta el momento es utilizar bit-twiddling para obtener b, luego hacer (int) (log (b)/log (2)), pero creo que tiene que haber un método más rápido que no involucre dividiendo dos números de coma flotante.
¿Cuál es la gama de valores de 'x'? ¿Cuál es el tipo de 'a'? –
Como dije en la pregunta, _a_ es un int. _x_ es estrictamente no negativo. –
@Andy: ¿Dónde lo dijiste en la pregunta? Dijiste que tienes un * número * 'a'. Podría haber sido un 'short', un' long' o incluso 'BigInteger'. ¿Puede ser 'Integer.MAX_VALUE', en cuyo caso' x' puede ser 32, pero no más? –