Test Foro de elhacker.net SMF 2.1

Foros Generales => Dudas Generales => Mensaje iniciado por: m@o_614 en 21 Marzo 2013, 20:23 PM

Título: algoritmo
Publicado por: m@o_614 en 21 Marzo 2013, 20:23 PM
Saludos

Alguien sabe de algun algoritmo que dado un número decimal me diga cuántos bits serán necesarios a la hora de convertirlo a binario??, por ejemplo:

si tengo el número 12 al convertirlo a binario sería 1100-> se necesitan 4 bits, pero necesito una manera que me diga cuántos antes de hacer la conversión

gracias de antemano
Título: Re: algoritmo
Publicado por: MCKSys Argentina en 21 Marzo 2013, 20:37 PM
Una forma rapida (y "barata") es ir generando las potencias de 2 (2^1, 2^2) hasta que el numero obtenido sea mayor o igual al buscado. Llegada la condicion, la cantidad de bits necesarios seran los indicados por el exponente actual (siempre verifica que este contenido en el rango entre el exp anterior y el actual)

Ejemplo: Numero 12 (1100)

Potencias:

2^0=1
2^1=2
2^2=4
2^3=8
2^4=16 <-- 4 bits.

Ejemplo: Numero 9 (1001)

Potencias:

2^0=1
2^1=2
2^2=4
2^3=8
2^4=16 <-- 4 bits.

Espero te sirva.

Saludos!
Título: Re: algoritmo
Publicado por: ‭lipman en 21 Marzo 2013, 21:58 PM
Más que un algoritmo, yo veo una función sencilla.

ceil(log(2,X))

Redondeo al alza de logaritmo en base 2 de X.

Un saludo.
Título: Re: algoritmo
Publicado por: Flamer en 22 Marzo 2013, 04:18 AM
hola m@o_614 code en vb6


dim X, NumUser, Conta as integer
X=1
Conta=0
NumUser=12
while NumUser > X
   X=X * 2
  Conta=Conta + 1
wend
if NumUser = X then
   Conta=Conta + 1
end if


ya despues de esto solo imprimes Conta

saludos flamer y dime si te sirbio
Título: Re: algoritmo
Publicado por: seneka77 en 22 Marzo 2013, 14:41 PM
Es la solución mas sencilla, y  directa, logaritmo en base 2; lo malo es que hay que usar un buena aplicación matemática o calculadora güena
 
Cita de: lipman en 21 Marzo 2013, 21:58 PM
Más que un algoritmo, yo veo una función sencilla.

ceil(log(2,X))

Redondeo al alza de logaritmo en base 2 de X.

Un saludo.