# Rutinas PASCAL - Parte I - (nivel medio)



## MaMu (Nov 17, 2005)

*
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: 

```
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:

```
Function Ultimos_4(X: Byte): Byte;
Begin
Ultimos_4 := X And 15;    (* Devuelve los últimos 4 bits *)
End;
```


----------

