Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ferchundo9 en 9 Mayo 2017, 22:44 pm



Título: Función cota de número potencia de dos
Publicado por: ferchundo9 en 9 Mayo 2017, 22:44 pm
Hola, como parte dun programa que estoy haciendo necesitaria una función que dados dos numeros cualesquiera diese el menor numero potencia de dos que fuera mayor que los dos numeros. Si alguien me pudiese dar una idea de como hacerlo, se lo agradecería


Título: Re: Función cota de número potencia de dos
Publicado por: ivancea96 en 9 Mayo 2017, 23:06 pm
Puedes ir potencia a potencia, desde 2^1, hasta que el número cumpla ambas condiciones.


Título: Re: Función cota de número potencia de dos
Publicado por: engel lex en 9 Mayo 2017, 23:33 pm
primero escoges el mayor de los 2, luego tienes 2 vias
1- ciclo que vaya elevando 2 hasta que sea mayor que el escogido
2- calcular el logaritmo de el mayor en base 2 y luego elevar 2 al resultado


Título: Re: Función cota de número potencia de dos
Publicado por: MAFUS en 10 Mayo 2017, 00:49 am
Supongamos n tu número y k una variable inicializada a 1.
En un bucle que mueva a nivel de bits n hacia la derecha hasta que n valga 0, k se sumará a sí misma.
Al terminar tendrás en k el número que buscas.

O mejor aún cada vez que n se desplace a la derecha desplazar k una vez a la iźquierda.
Aunque esto supondría una mejora solo para microcontroladores de gama baja donde la suma es más costosa que desplazar bits.