Programando En C A Bajo Nivel
Enviado por franacos • 26 de Julio de 2012 • 2.717 Palabras (11 Páginas) • 607 Visitas
Universidad de Buenos Aires
Facultad De Ingeniera
Programando en C a Bajo Nivel
[75.40] Algoritmos y Programacion I
1er Cuatrimestre 2011
Catedra: Ing. Pablo Guarna
Autor: Bernardo Ortega Moncada
Version 3.0
Programando en C a Bajo Nivel 1er Cuatrimestre 2011
Indice
1. Introduccion 2
2. Representacion de Numeros en Base Binaria 2
2.1. Complementos A1 de un Numero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3. Sentencias Bit a Bit en C 2
3.1. Operacion AND (Bit a Bit) (&) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2. Operacion OR (Bit a Bit) (j) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.3. Operacion XOR (bit a bit) ( ^ ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.4. Operacion Complemento A1 a la Base ( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.5. Desplazamiento de Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.5.1. Desplazamiento de Bits a la Derecha ( >> ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.5.2. Desplazamiento de Bits a la Izquierda ( << ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.6. Operador Ternario (? :) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.6.1. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.7. Campos de Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.7.1. Limitaciones de Campos de Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.8. Ventajas y Desventajas de Operar Bit a Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4. El Preprocesador de C 10
4.1. >Que Es Un Macro? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2. Ejemplos de Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.2.1. Inclusion de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.2.2. Creacion de Archivos de Cabecera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.2.3. Creacion de Macros como Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.2.4. Creacion de Macros como Funcion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.3. Otras Directivas del Preprocesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3.1. #undef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3.2. #if , #else , #elif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3.3. #error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.4. Ventajas y Desventajas de Usar Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Autor: Bernardo Ortega Moncada 1
Programando en C a Bajo Nivel 1er Cuatrimestre 2011
1. Introduccion
Este apunte esta orientado para que el lector pueda apreciar como uno puede trabajar en el lenguaje de programacion
C con sentencias de Bajo Nivel y utilizar herramientas que pueden ser utiles a la hora de programar sentencias que podran
simplicar lineas operando a bajo nivel. Este apunte es de caracter informativo, no signica que lo vayan a usar en esta
materia, pero quizas en alguna posterior. Esta demas aclarar que para leer este apunte se necesita un conocimiento basico
previo del Lenguaje. Todas estas operaciones que se muestran en el apunte, tambien son validas en el Lenguaje C++
2. Representacion de Numeros en Base Binaria
Como uno ya sabe, los numeros en la computadora no se expresan de la misma forma que un ser humano escribe. Ya
que la computadora trabaja de forma binaria y solo puede comprender si algo es verdadero o falso, si hay informacion o
no, por lo tanto si uno esta trabajando con numeros que ocupan 1 Byte, uno sabe que 1 Byte esta compuesto por 8 bits,
lo cual un bit solo puede almacenar 1 o 0.
Por lo tanto si nosotros a modo de ejemplo tenemos el numero, la computadora ve a este numero de la siguiente manera:
Representacion Decimal Representacion Binaria en 8 bits
0j10 = 00000000j2
2j10 = 00000010j2
7j10 = 00000111j2
25j10 = 00011001j2
255j10 = 11111111j2
Pero tenemos que saber que un numero representado en binario posee 2 bits muy importantes. El bit mas Signi-
...