Máquina de ejecución Sistemas numéricos Métodos de conversión
Programación estructurada
Sistemas numéricos
Oscar Alvarado Nava
oan@[Link]
Departamento de Electrónica
División de Ciencias Básicas e Ingenierı́a
Universidad Autónoma Metropolitana, Unidad Azcapotzalco
15-Otoño, septiembre de 2015
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 1/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Contenido
1 Máquina de ejecución
Máquina de ejecución
Lenguajes de la máquina
2 Sistemas numéricos
Sistema numéricos
Notaciones
3 Métodos de conversión
Sustitución de una serie
Método de división entre la base
Método de multiplicación por la base
Cuando la base=2k
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 2/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Máquina de ejecución
Mecanismo de ejecución
RAM
100010100111
001010100110
101010101110
100101100110
111000011111
001111100010
111110100000
sistema
operativo
CPU
pc
001010100110 ir
Control
ALU
HD
encabezado
100010100111
001010100110
101010101110
100101100110
111000011111
001111100010
111110100000
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 3/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Lenguajes de la máquina
Lenguaje de alto nivel: lenguaje C
1 int main()
2 {
3 int x=15;
4 int y=9;
5 int z=0;
6
7 z = x + y;
8
9 return 0;
10 }
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 4/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Lenguajes de la máquina
Lenguaje ensamblador: procesador intel x86
1 .file “suma.c” ;archivo
2 .text ;seccion de texto
3 .globl main ;simbolo global
4 main: .cfi startproc
5 push %ebp ;libera pila
6 mov %esp, %ebp
7 sub $16, %esp
8 movl $15, -4( %ebp)
9 movl $9, -8( %ebp)
10 movl $0, -12( %ebp)
11 mov -8( %ebp), %eax ;carga op1
12 mov -4( %ebp), %edx ;carga op2
13 add %edx, %eax ;suma de datos
14 mov %eax, -12( %ebp) ;almacena resultado
15 mov $0, %eax ;valor de regreso
16 leave ;fin de modulo
17 .cfi restore
18 ret
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 5/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Lenguajes de la máquina
Lenguaje ensamblador y lenguaje máquina
1 .file “suma.c”
2 .text
3 .globl main
4 main: .cfi startproc
5 push %ebp 01010101000000000000000000000000
6 mov %esp, %ebp 10001001111001010000000000000000
7 sub $16, %esp 10000011111011000001000000000000
8 movl $15, -4( %ebp) 11000111010001011111110000001111
9 movl $9, -8( %ebp) 11000111010001011111100000001001
10 movl $0, -12( %ebp) 11000111010001011111010000000000
11 mov -8( %ebp), %eax 10001011010001011111100000000000
12 mov -4( %ebp), %edx 10001011010101011111110000000000
13 add %edx, %eax 00000001110100000000000000000000
14 mov %eax, -12( %ebp) 10001011010001011111010000000000
15 mov $0, %eax 10111000000000000000000000000000
16 leave 11001001000000000000000000000000
17 .cfi restore
18 ret 11000011000000000000000000000000
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 6/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Lenguajes de la máquina
Lenguaje ensamblador y lenguaje máquina
1 .file “suma.c”
2 .text
3 .globl main
4 main: .cfi startproc
5 push %ebp 0101 0101 0000 0000 0000 0000 0000 0000
6 mov %esp, %ebp 1000 1001 1110 0101 0000 0000 0000 0000
7 sub $16, %esp 1000 0011 1110 1100 0001 0000 0000 0000
8 movl $15, -4( %ebp) 1100 0111 0100 0101 1111 1100 0000 1111
9 movl $9, -8( %ebp) 1100 0111 0100 0101 1111 1000 0000 1001
10 movl $0, -12( %ebp) 1100 0111 0100 0101 1111 0100 0000 0000
11 mov -8( %ebp), %eax 1000 1011 0100 0101 1111 1000 0000 0000
12 mov -4( %ebp), %edx 1000 1011 0101 0101 1111 1100 0000 0000
13 add %edx, %eax 0000 0001 1101 0000 0000 0000 0000 0000
14 mov %eax, -12( %ebp) 1000 1011 0100 0101 1111 0100 0000 0000
15 mov $0, %eax 1011 1000 0000 0000 0000 0000 0000 0000
16 leave 1100 1001 0000 0000 0000 0000 0000 0000
17 .cfi restore
18 ret 1100 0011 0000 0000 0000 0000 0000 0000
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 7/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Lenguajes de la máquina
Lenguaje ensamblador y lenguaje máquina en hexadecimal
1 .file “suma.c”
2 .text
3 .globl main
4 main: .cfi startproc
5 push %ebp 5 5 0 0 0 0 0 0
6 mov %esp, %ebp 8 9 e 5 0 0 0 0
7 sub $16, %esp 8 3 e c 1 0 0 0
8 movl $15, -4( %ebp) c 7 4 5 f c 0 f
9 movl $9, -8( %ebp) c 7 4 5 f 8 0 9
10 movl $0, -12( %ebp) c 7 4 5 f 4 0 0
11 mov -8( %ebp), %eax 8 b 4 5 f 8 0 0
12 mov -4( %ebp), %edx 8 b 4 5 f c 0 0
13 add %edx, %eax 0 1 d 0 0 0 0 0
14 mov %eax, -12( %ebp) 8 b 4 5 f 4 0 0
15 mov $0, %eax b 8 0 0 0 0 0 0
16 leave c 9 0 0 0 0 0 0
17 .cfi restore
18 ret c 3 0 0 0 0 0 0
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 8/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Lenguajes de la máquina
Lenguaje ensamblador y lenguaje máquina en hexadecimal
1 .file “suma.c”
2 .text
3 .globl main
4 main: .cfi startproc
5 push %ebp 55000000
6 mov %esp, %ebp 89e50000
7 sub $16, %esp 83ec1000
8 movl $15, -4( %ebp) c745fc0f
9 movl $9, -8( %ebp) c745f809
10 movl $0, -12( %ebp) c745f400
11 mov -8( %ebp), %eax 8b45f800
12 mov -4( %ebp), %edx 8b45fc00
13 add %edx, %eax 01d00000
14 mov %eax, -12( %ebp) 8b45f400
15 mov $0, %eax b8000000
16 leave c9000000
17 .cfi restore
18 ret c3000000
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 9/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Lenguajes de la máquina
Lenguaje ensamblador y lenguaje máquina
1 .file “suma.c”
2 .text
3 .globl main
4 main: .cfi startproc
5 push %ebp 01010101000000000000000000000000
6 mov %esp, %ebp 10001001111001010000000000000000
7 sub $16, %esp 10000011111011000001000000000000
8 movl $15, -4( %ebp) 11000111010001011111110000001111
9 movl $9, -8( %ebp) 11000111010001011111100000001001
10 movl $0, -12( %ebp) 11000111010001011111010000000000
11 mov -8( %ebp), %eax 10001011010001011111100000000000
12 mov -4( %ebp), %edx 10001011010101011111110000000000
13 add %edx, %eax 00000001110100000000000000000000
14 mov %eax, -12( %ebp) 10001011010001011111010000000000
15 mov $0, %eax 10111000000000000000000000000000
16 leave 11001001000000000000000000000000
17 .cfi restore
18 ret 11000011000000000000000000000000
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 10/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Lenguajes de la máquina
Lenguaje ensamblador y lenguaje máquina
1 .file “suma.c”
2 .text
3 .globl main
4 main: .cfi startproc
5 push %ebp 01 010 101 000 000 000 000 000 000 000 000
6 mov %esp, %ebp 10 001 001 111 001 010 000 000 000 000 000
7 sub $16, %esp 10 000 011 111 011 000 001 000 000 000 000
8 movl $15, -4( %ebp) 11 000 111 010 001 011 111 110 000 001 111
9 movl $9, -8( %ebp) 11 000 111 010 001 011 111 100 000 001 001
10 movl $0, -12( %ebp) 11 000 111 010 001 011 111 010 000 000 000
11 mov -8( %ebp), %eax 10 001 011 010 001 011 111 100 000 000 000
12 mov -4( %ebp), %edx 10 001 011 010 101 011 111 110 000 000 000
13 add %edx, %eax 00 000 001 110 100 000 000 000 000 000 000
14 mov %eax, -12( %ebp) 10 001 011 010 001 011 111 010 000 000 000
15 mov $0, %eax 10 111 000 000 000 000 000 000 000 000 000
16 leave 11 001 001 000 000 000 000 000 000 000 000
17 .cfi restore
18 ret 11 000 011 000 000 000 000 000 000 000 000
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 11/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Lenguajes de la máquina
Lenguaje ensamblador y lenguaje máquina en octal
1 .file “suma.c”
2 .text
3 .globl main
4 main: .cfi startproc
5 push %ebp 1 2 5 0 0 0 0 0 0 0 0
6 mov %esp, %ebp 2 1 1 7 1 2 0 0 0 0 0
7 sub $16, %esp 2 0 3 7 3 0 1 0 0 0 0
8 movl $15, -4( %ebp) 3 0 7 2 1 3 7 6 0 1 7
9 movl $9, -8( %ebp) 3 0 7 2 1 3 7 4 0 1 1
10 movl $0, -12( %ebp) 3 0 7 2 1 3 7 2 0 0 0
11 mov -8( %ebp), %eax 2 1 3 2 1 3 7 4 0 0 0
12 mov -4( %ebp), %edx 2 1 3 2 5 3 7 6 0 0 0
13 add %edx, %eax 0 0 1 6 4 0 0 0 0 0 0
14 mov %eax, -12( %ebp) 2 1 3 2 1 3 7 2 0 0 0
15 mov $0, %eax 2 7 0 0 0 0 0 0 0 0 0
16 leave 3 1 1 0 0 0 0 0 0 0 0
17 .cfi restore
18 ret 3 0 3 0 0 0 0 0 0 0 0
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 12/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Lenguajes de la máquina
Lenguaje ensamblador y lenguaje máquina en octal
1 .file “suma.c”
2 .text
3 .globl main
4 main: .cfi startproc
5 push %ebp 12500000000
6 mov %esp, %ebp 21171200000
7 sub $16, %esp 20373010000
8 movl $15, -4( %ebp) 30721376017
9 movl $9, -8( %ebp) 30721374011
10 movl $0, -12( %ebp) 30721372000
11 mov -8( %ebp), %eax 21321374000
12 mov -4( %ebp), %edx 21325376000
13 add %edx, %eax 00164000000
14 mov %eax, -12( %ebp) 21321372000
15 mov $0, %eax 27000000000
16 leave 31100000000
17 .cfi restore
18 ret 30300000000
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 13/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Sistema numéricos
Sistema numérico
Conjunto ordenado de sı́mbolos: dı́gitos
Relaciones para aritmética: suma, resta, multiplicación y
división
La base, r , indica el número de dı́gitos permitidos
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 14/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Sistema numéricos
Sistemas numéricos en computación
Decimal Binario Octal Hexadecimal
Base r = 10 r =2 r =8 r = 16
Dı́gitos 0,1,2,3,4 0,1 0,1,2,3,4 0,1,2,3,4,5,6,7
5,6,7,8,9 5,6,7 8,9,A,B,C,D,E,F
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 15/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Sistema numéricos
Sistema decimal
Base: r = 10
Dı́gitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
operaciones: suma (+), resta (−), multipilicación (∗), división
(/ o ÷)
El punto decimal divide la parte entera y la parte fraccionaria
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 16/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Notaciones
Notación posicional
El número 123. 35, está compuesto de:
1 centena
2 decenas
3 unidades
3 décimas
5 centésimas
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 17/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Notaciones
Notación posicional
En general:
N = (an−1 an−2 · · · a1 a0 .a−1 a−2 · · · a−m )r
donde:
. separa la parte entera de la parte fraccionaria
r base
n número de dı́gitos enteros
m número de dı́gitos fracionarios
ai dı́gito entero cuando n − 1 ≥ i ≥ 0
ai dı́gito fraccionario cuando −1 ≥ i ≥ −m
an−1 dı́gito más siginificativo
a−m dı́gito menos siginificativo
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 18/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Notaciones
Notación polinomial
La cantidad (123. 35)10 se puede escribir de la siguiente forma:
N = 1 × 100+2 × 10+3 × 1+3 × 0. 1+5 × 0. 01
N = 1 × 102 +2 × 101 +3 × 100 +3 × 10−1 +5 × 10−2
En general, se tiene la siguiente ecuación:
n−1
X
N= ai × r i
i=−m
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 19/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Sustitución de una serie
Sustitución de la serie
Al expandir la serie:
n−1
X
N= ai × r i
i=−m
tenemos:
N = an−1 × r n−1 + · · · + a0 × r 0 + a−1 × r −1 + · · · + a−m × r −m
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 20/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Sustitución de una serie
Ejemplo 1: de binario a decimal
Convertir (11010. 11)2 a base 10
1 × 24 + 1 × 23 + 0 × 22 + 1 × 21 + 0 × 20 + 1 × 2−1 + 1 × 2−2
1 × 16+ 1 × 8+ 0 × 4+ 1 × 2+ 0 × 1+ 1 × 0. 5+ 1 × 0. 25
16+ 8+ 0+ 2+ 0+ 0. 5+ 0. 25
26. 75
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 21/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Sustitución de una serie
Ejemplo 2: de octal a decimal
Convertir (456. 5)8 a base 10
4 × 82 + 5 × 81 + 6 × 80 +5 × 8−1
4 × 64+ 5 × 8+ 6 × 1+ 5 × 0. 125
256+ 40+ 6+ 0. 625
302. 625
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 22/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Sustitución de una serie
Ejemplo 3: de hexadecimal a decimal
Convertir (B65F )16 a base 10
B × 163 + 6 × 162 + 5 × 161 + F × 160
B × 4096+ 6 × 256+ 5 × 16+ F × 1
11 × 4096+ 6 × 256+ 5 × 16+ 15 × 1
45056+ 1536+ 80+ 15
46687
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 23/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Método de división entre la base
Llamado método del residuo
Únicamente para la parte entera
Cambio de la base A a la base B, si A > B
Nent = bn−1 × B n−1 + · · · + b1 × B 1 + b0 × B 0
Podemos determinar el dı́gito menos significativo, b0 , si dividimos
por la base:
Nent bn−1 ×B n−1 +···+b1 ×B 1 +b0 ×B 0
B = B
= bn−1 × B n−2 + · · · + b1 × B 0 + b0
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 24/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Método de división entre la base
Conversión de base 10 a base 2 de la parte entera
Convertir (41)10 a base 2
Fracción Cociente entero Residuo Dı́gito
41
2 20 1 b0
20
2 10 0 b1
10
2 5 0 b2
5
2 2 1 b3
2
2 1 0 b4
1
2 0 1 b5
(41)10 = (101001)2
Del bit más significativo al bit menos significativo
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 25/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Método de división entre la base
Conversión de base 10 a base 8 de la parte entera
Ejemplo 4: Convertir (234)10 a base 8
Fracción Cociente entero Residuo Dı́gito
234
8 29 2 b0
29
8 3 5 b1
3
8 0 3 b2
(234)10 = (352)8
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 26/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Método de multiplicación por la base
Llamado método de las fracciones
Cambio de base, de la base A a la base B
Únicamente para la parte fraccionaria de un número
Nfrac = b−1 × B −1 + b−2 × B −2 + · · · + b−m × B −m
Podemos determinar el dı́gito más significativo de la parte
fraccionaira, b−1 , si multiplicamos por la base:
= B × b−1 × B −1 + b−2 × B −2 + · · · + b−m × B −m
Nfrac × B
= b−1 + b−2 × B −1 + · · · + b−m × B −(m−1)
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 27/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Método de multiplicación por la base
Conversión de base 10 a base 2 de la parte fraccionaria
Ejemplo 5: Convertir (0.6875)10 a base 2
Fracción Entero Fracción Dı́gito
0.6875× 2 1 0.3750 b−1
0.3750× 2 0 0.7500 b−2
0.7500× 2 1 0.5000 b−3
0.5000× 2 1 0.0000 b−4
(0.6875)10 =(0.1011)2
Del bit más significativo al bit menos significativo
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 28/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
Método de multiplicación por la base
Conversión de base 10 a base 8 de la parte fraccionaria
Ejemplo 6: Convertir (0.1285)10 a base 8
Fracción Entero Fracción Dı́gito
0.1285× 8 1 0.0280 b−1
0.0280× 8 0 0.2240 b−2
0.2240× 8 1 0.7920 b−3
0.7920× 8 6 0.3360 b−4
0.3360× 8 2 0.6880 b−5
0.6880× 8 5 0.5040 b−6
0.5040× 8 4 0.0320 b−7
0.0320× 8 0 0.2520 b−8
(0.1285)10 =(0.10162540...)8
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 29/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
k
Cuando la base=2
Agrupamiento de dı́gitos binarios
Como 23 = 8 para cada dı́gito octal le corresponden 3 dı́gitos
binarios
Como 24 = 16 para cada dı́gito hexadecimal le corresponden 4
dı́gitos binarios
El reagrupamiento de la parte entera se realiza de derecha a
izquierda a partir del punto
El reagrupamiento de la parte fraccionaria se realiza de
izquierda a derecha a partir del punto
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 30/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
k
Cuando la base=2
Conversión de base 2 a base 8
Convertir (10110001101011.11111010011)2 a base 8.
Como 23 = 8 se necesitan 3 dı́gitos binarios por cada dı́gito octal.
Agrupamos:
(10110001101011.11111010011)2
(26153.7646)8
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 31/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
k
Cuando la base=2
Conversión de base 2 a base 16
Convertir (10110001101011.11111010011)2 a base 16.
Como 24 = 16 se necesitan 4 dı́gitos binarios por cada dı́gito
hexadecimal.
Agrupamos:
(10110001101011.11111010011)2
(2C6B.FA6)16
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 32/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
k
Cuando la base=2
Conversión de base 8 a base 16
Convertir (26153.7406)8 a base 16.
Inicialmente pasamos de base 8 a base 2:
(26153.7406)8 = ( 010 110 001 101 011 . 111 100 000 110)2
Reagrupamos:
( 010 110 001 101 011 . 111 100 000 110)2
(26153.7406)8 =(2C6B.F06)16
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 33/34
Máquina de ejecución Sistemas numéricos Métodos de conversión
k
Cuando la base=2
Conversión de base 16 a base 8
Convertir (AF.16C)16 a base 8.
Inicialmente pasamos de base 16 a base 2:
(AF.16C)16 = ( 1010 1111 . 0001 0110 1100 )2
Reagrupamos:
( 1010 1111 . 0001 0110 1100 )2
(AF.16C)16 =(257.0554)8
Oscar Alvarado Nava UAM Azcapotzalco Programación estructurada 34/34