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
Ir a la versión completa