Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




Rutinas PASCAL - Parte I - (nivel medio)


       



#1  Rutinas PASCAL - Parte I - (nivel medio)
MaMu
Moderador
Registrado: 18 Abr 2005
Mensajes: 895
Ubicación: Argentina - Buenos Aires - Capital Federal
citar

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: Seleccionar todo

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: Seleccionar todo

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

 Responder



Google
 


 Temas de interés 
No hay mensajes nuevos Fuente de alimentacion reproductor DVD
No hay mensajes nuevos Diagrama de Fuente de tension regulable
No hay mensajes nuevos componente de fuente de alimentacion para pc
No hay mensajes nuevos Que fuente uso para ecualizador de auto, para mi casa
No hay mensajes nuevos Como saber si la fuente está quemada sin abrirla?

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||