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;