Programación General > Pascal

 De Numero A Numero De Bits

(1/1)

manduchina:
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:
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 --- BitsNecesarios:=0;While (Numero>0) dobegin   Numero:=Numero shr 1;{Dividir entre dos}   Inc(BitsNecesarios);{incrementar en 1}end;result:=BitsNecesarios;  

manduchina:
Muchas gracias!!!

Navegación

[0] Índice de Mensajes

Ir a la versión completa