Programando En C A Bajo Nivel
Enviado por franacos • 26 de Julio de 2012 • 2.717 Palabras (11 Páginas) • 642 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-
cativo (MSB, por sus siglas en ingles) y El Bit Menos Signicativo (LSB, por sus siglas en ingles).
Una observacion a tener en cuenta es que el MSB tambien es considerado Bit de Signo, siempre y cuando se use la
representacion MyBS (Modulo y Bit de Signo).
se considera al 1 como el signo negativo
se considera al 0 como el signo positivo
Por ejemplo, tenemos un numero representado en su forma binaria, podemos apreciar cuales son los bits signicativos:
1 0 0 1 0 1 0 1
" "
MSB LSB
2.1. Complementos A1 de un Numero
El complemento A1 de un numero representado en forma binaria, consiste en negar (o invertir) bit a bit la expresion
del numero, en lineas generales consiste en cambiar los 0's por 1's y viceversa. Esta herramienta es muy poderosa en
el ambito de la computacion ya que nos permite representar un numero de forma negativa, ya que como sabemos, la
computadora no reconoce los numeros negativos. Veamos el siguiente ejemplo de como calcular el complemento A1 a la
base de un numero binario cualquiera:
01100100 ) |1001{z1011}
Complemento A1
3. Sentencias Bit a Bit en C
Uno puede hacer una serie de operaciones
...