• Domingo 22 de Diciembre de 2024, 21:31

Autor Tema:  De Numero A Numero De Bits  (Leído 1425 veces)

manduchina

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
De Numero A Numero De Bits
« en: Viernes 11 de Enero de 2008, 20:11 »
0
Hola!
Soy nueva en pascal y quería saber si existe alguna función que pasandóle un número (integer) te devolviera el número de bits q se necesitan xa su representación.

Si no, si me pudieran dar un poco de ayuda xa desarrollarlo yo habia pensado en dividir x dos hasta q el resultado fuera 0, cogiendo solo la parte entera, saben q función existe xa esto? e incrementar un contador, pero no se si habrá una manera más facillilla.

Gracias x anticipado.

Saludos

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: De Numero A Numero De Bits
« Respuesta #1 en: Sábado 12 de Enero de 2008, 04:33 »
0
Tomando en cuenta que tratamos solo con enteros positivos, lo de dividir por dos es buena idea, además existe el operador de desplazamiento a izquierda que permite dividir entre potencias de 2 siempre que X sea entero positivo:

Por ejemplo X shl 1 equivale a X div 2.

Pero también sería suficiente esta función:

Bits:=Trunc( log2((Numero shl 1)+1) );

No recuerdo si en pascal estándar tienes el logaritmo en base 2, pero si tienes ln puedes obtener el log2 con esta ecuación:
log2(x)=(ln(x)/ln(2))

O también:

Código: Text
  1.  
  2. BitsNecesarios:=0;
  3. While (Numero>0) do
  4. begin
  5.    Numero:=Numero shr 1;{Dividir entre dos}
  6.    Inc(BitsNecesarios);{incrementar en 1}
  7. end;
  8. result:=BitsNecesarios;
  9.  
  10.  

manduchina

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: De Numero A Numero De Bits
« Respuesta #2 en: Sábado 12 de Enero de 2008, 09:37 »
0
Muchas gracias!!!