algoritmo

Iniciado por m@o_614, 21 Marzo 2013, 20:23 PM

0 Miembros y 1 Visitante están viendo este tema.

m@o_614

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

MCKSys Argentina

#1
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!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


‭lipman

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.

Flamer

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

seneka77

#4
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.