Rutinas PASCAL - Parte I - (nivel medio)


Fuente : MaMu (MGD) - Nico Salgado

Dedicado a todos los que han descubierto en Pascal una herramienta útil y sencilla, con un mínimo de requerimientos.

Corrimientos y Manejo de Bits
Cómo obtener los primeros 4 bits de 1 byte?


Si algo entiendés sobre la utilización de los bits en una PC sabrás que un byte equivale a 8 bits, esto significa que con un byte se pueden hacer 256 combinaciones posibles de ceros y unos con los 8 bits. Turbo Pascal te permite hacer distintas operaciones con bits, entre ellas el "corrimiento" de bits hacia la izquierda y hacia la derecha - SHL y SHR - y utilizar los operadores AND, OR, XOR y NOT.
Si en este caso quieres obtener los 4 primeros bits de un número puedes hacer un corrimiento hacia la derecha de 4 bits con SHR, es decir:
Código:
Function Primeros_4(X: Byte): Byte;
Begin
Primeros_4 := X Shr 4;    (* Devuelve el número especificado desplazado 4 bits *)
End;

Ejemplo: Especificando el valor decimal 105, en binario representa a 01101001. Al desplazar 4 bits hacia la derecha el valor devuelto es 0110, que es 6 en decimal.

Si te estás preguntando como obtener los últimos 4 bits en vez de los primeros, tienes dos maneras: La primera, menos eficiente, es desplazar a la izquierda (SHL) 4 bits y desplazar a la derecha (SHR) 4 bits. La otra es utilizando el operador AND para comparar bit a bit. En este caso

compararemos con 00001111.
Observa:

01101001 (105) AND
00001111 (15)
--------------
00001001 (9) (Observa que será "1" solo cuando los dos bits sean 1, sino será "0")

Esto en Pascal equivale a:
Código:
Function Ultimos_4(X: Byte): Byte;
Begin
Ultimos_4 := X And 15;    (* Devuelve los últimos 4 bits *)
End;
 
Atrás
Arriba