PDF de programación - Programando en C a Bajo Nivel

Imágen de pdf Programando en C a Bajo Nivel

Programando en C a Bajo Nivelgráfica de visualizaciones

Publicado el 20 de Marzo del 2018
1.209 visualizaciones desde el 20 de Marzo del 2018
368,7 KB
16 paginas
Creado hace 12a (08/06/2011)
Universidad de Buenos Aires

Facultad De Ingenier´ıa

Programando en C a Bajo Nivel

[75.40] Algoritmos y Programaci´on I

1er Cuatrimestre 2011

C´atedra: Ing. Pablo Guarna

Autor: Bernardo Ortega Moncada

Versi´on 3.0

i

Programando en C a Bajo Nivel

1er Cuatrimestre 2011

´Indice

1. Introducci´on

2. Representaci´on de N´umeros en Base Binaria

2.1. Complementos A1 de un N´umero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. Sentencias Bit a Bit en C

3.1. Operaci´on AND (Bit a Bit) (&) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Operaci´on OR (Bit a Bit) (|)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. Operaci´on XOR (bit a bit) ( ∧ )
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4. Operaci´on Complemento A1 a la Base ( ∼ )
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5. Desplazamiento de Bits
3.5.1. Desplazamiento de Bits a la Derecha ( >> ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.2. Desplazamiento de Bits a la Izquierda ( < < ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.1. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7. Campos de Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8. Ventajas y Desventajas de Operar Bit a Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.7.1. Limitaciones de Campos de Bits

3.6. Operador Ternario (? :)

4. El Preprocesador de C

Inclusi´on de Archivos

4.1. ¿Que Es Un Macro? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Ejemplos de Macros
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.1.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.2. Creaci´on de Archivos de Cabecera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.3. Creaci´on de Macros como Constantes
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.4. Creaci´on de Macros como Funci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3. Otras Directivas del Preprocesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1. #undef
4.3.2. #if , #else , #elif
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.3. #error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.4. Ventajas y Desventajas de Usar Macros

2

2
2

2
3
4
5
5
6
6
7
7
8
8
9
9

10
10
11
11
11
11
12
14
14
14
14
15

Autor: Bernardo Ortega Moncada

1

i

Programando en C a Bajo Nivel

1er Cuatrimestre 2011

1.

Introducci´on

Este apunte esta orientado para que el lector pueda apreciar como uno puede trabajar en el lenguaje de programaci´on
C con sentencias de Bajo Nivel y utilizar herramientas que pueden ser ´utiles a la hora de programar sentencias que podr´ıan
simplificar lineas operando a bajo nivel. Este apunte es de car´acter informativo, no significa que lo vayan a usar en esta
materia, pero quiz´as en alguna posterior. Esta demas aclarar que para leer este apunte se necesita un conocimiento b´asico
previo del Lenguaje. Todas estas operaciones que se muestran en el apunte, tambi´en son v´alidas en el Lenguaje C++

2. Representaci´on de N´umeros en Base Binaria

Como uno ya sabe, los n´umeros 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 informaci´on o
no, por lo tanto si uno esta trabajando con n´umeros 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 n´umero, la computadora ve a este n´umero de la siguiente manera:

Representaci´on Decimal

0|10
2|10
7|10
25|10
255|10

=
=
=
=
=

Representaci´on Binaria en 8 bits

00000000|2
00000010|2
00000111|2
00011001|2
11111111|2

Pero tenemos que saber que un n´umero representado en binario posee 2 bits muy importantes. El bit mas Signifi-

cativo (MSB, por sus siglas en ingles) y El Bit Menos Significativo (LSB, por sus siglas en ingles).

Una observaci´on a tener en cuenta es que el MSB tambi´en es considerado Bit de Signo, siempre y cuando se use la

representaci´on MyBS (M´odulo 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 significativos:

0

0

1

0

1

0

1


MSB

1

LSB

2.1. Complementos A1 de un N´umero

El complemento A1 de un numero representado en forma binaria, consiste en negar (o invertir) bit a bit la expresi´on
del n´umero, en lineas generales consiste en cambiar los 0’s por 1’s y viceversa. Esta herramienta es muy poderosa en
el ´ambito de la computaci´on ya que nos permite representar un n´umero de forma negativa, ya que como sabemos, la
computadora no reconoce los n´umeros negativos. Veamos el siguiente ejemplo de como calcular el complemento A1 a la
base de un numero binario cualquiera:

01100100 ⇒

10011011

Complemento A1

(cid:124)

(cid:123)(cid:122)

(cid:125)

3. Sentencias Bit a Bit en C

Uno puede hacer una serie de operaciones l´ogicas bit a bit con el lenguaje C, e incluso realizar complementos A1, o
desplazamientos de Bits a la derecha o a la izquierda. Estas operaciones son muy comunes en el lenguaje de bajo nivel
denominado Assembler (Ensamblador). A continuaci´on se muestra una tabla con algunas de las operaciones a bajo nivel
que podemos realizar:

Autor: Bernardo Ortega Moncada

2

i

Programando en C a Bajo Nivel

1er Cuatrimestre 2011

Operador

Acci´on

&
|


>>
<<
? :

Operaci´on AND (bit a bit) simula una compuerta AND - 74ls08 TTL

Operaci´on OR (bit a bit) simula una compuerta OR - 74ls32 TTL

Operaci´on XOR (bit a bit) simula una compuerta XOR - 74ls86 TTL

Complemento A1 a la base

Desplazamiento de bits hacia la derecha
Desplazamiento de bits hacia la izquierda

Operador Ternario

3.1. Operaci´on AND (Bit a Bit) (&)

Si recordamos que la operaci´on AND (Bit a Bit) esta definida por la siguiente tabla de verdad:

A B A&B
0
0
1
1

0
1
0
1

0
0
0
1

Como trabajamos con variables que ocupan 1 Byte (8 bits) la operaci´on AND Bit a Bit para estos casos se comportar´ıa

de la siguiente manera:

Supongamos que tenemos una variable a = 23 y otra variable b = 90, su representaci´on en binario de ambas seria:

a = 00010111 y b = 01011010
por lo tanto:

&

00010111

01011010
00010010

El resultado nos da un n´umero en binario cuya expresi´on es 00010010|2, que en decimal es conocido como 18|10.
Por lo tanto llevando este ejemplo al lenguaje C, se realizar´ıa de la siguiente manera:

Ejemplo1: Operaci´on L´ogica AND Bit a Bit

c h a r a = 2 3 ;
c h a r b = 9 0 ;
c h a r

r e s u l t a d o ;

i n t main ( )

1 #i n c l u d e <s t d i o . h>
2
3
4 {
5
6
7
8
9
10
11
12
13
14
15
16 }

r e t u r n 0 ;

p r i n t f ( ’ ’ R e s u l t a d o = % d ’ ’ , r e s u l t a d o ) ;

p r i n t f ( ’ ’ a = % d

b = % d ’ ’ , a , b ) ;

r e s u l t a d o = a & b ;

Una aplicaci´on ´util para este operador, es si queremos averiguar si un bit de cierto n´umero es 1 o 0, por ejemplo, se
tiene el n´umero a = 75 y se quiere averiguar si el cuarto bit de dicho n´umero es 1 o 0. Para eso tenemos que aplicar el
operador & al n´umero a con un n´umero cuya representaci´on binaria sea 00001000, dicho n´umero es el 8.

Veamos como queda la operaci´on primero:

&

01001011

00001000
00001000

Entonces el c´odigo nos quedar´ıa de la siguiente forma:

Autor: Bernardo Ortega Moncada

3

i

Programando en C a Bajo Nivel

1er Cuatrimestre 2011

Ejemplo2: Operaci´on L´ogica AND Bit a Bit

r e s u l t a d o ;

c h a r a = 7 5 ;
c h a r b = 8 ;
c h a r

i n t main ( )

1 #i n c l u d e <s t d i o . h>
2
3
4 {
5
6
7
8
9
10
11
12
13
14
15
16
17 }

r e t u r n 0 ;

( a & b )

e l s e

i f

p r i n t f ( ’ ’ a = % d

b = % d ’ ’ , a , b ) ;

p r i n t f ( ’ ’ e l c u a r t o b i t de l a v a r i a b l e a e s 1 \ n ’ ’ ) ;
p r i n t f ( ’ ’ e l c u a r t o b i t de l a v a r i a b l e a e s 0 \ n ’ ’ ) ;

3.2. Operaci´on OR (Bit a Bit) (|)

Si recordamos que la operaci´on OR (Bit a Bit) esta definida por la siguiente tabla de verdad:

A B A|B
0
0
1
0
1
1
1
1

0
1
0
1

Como trabajamos con variables que ocupan 1 Byte (8 bits) la operaci´on AND Bit a Bit para estos casos se comportar´ıa

de la siguiente manera:

Supongamos que tenemos una variable a = 23 y otra variable b = 90, su representaci´on en binario de ambas seria:

a = 00010111 y b = 01011010
por lo tanto:

|

00010111

01011010
01011111

El resultado nos da un n´umero en binario cuya expresi´on es 01011111|2, que en decimal es conocido como 95|10.

Ejemplo: Operaci´on L´ogica OR Bit a Bit

c h a r a = 2 3 ;
c h a r b = 9 0 ;
c h a r

i n t main ( )

1 #i n c l u d e <s t d i o . h>
2
3
4 {
5
6
7
8
9
10
11
12
13
14
15
16 }

r e t u r n 0 ;

r e s u l t a d o ;

p r i n t f ( ’ ’ a = % d
r e s u l t a d o = a | b ;

b = % d ’ ’ , a , b ) ;

p r i n t f ( ’ ’ R e s u l t a d o = % d ’ ’ , r e s u l t a d o ) ;

Autor: Bernardo Ortega Moncada

4

i

Programando en C a Bajo Nivel

1er Cuatrime
  • Links de descarga
http://lwp-l.com/pdf9702

Comentarios de: Programando en C a Bajo Nivel (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad