Download Sistemas de Numeración - Facultad de Ciencias de la Computación

Document related concepts

Sistema binario wikipedia , lookup

Sistema octal wikipedia , lookup

Sistema de dígitos signados wikipedia , lookup

Sistema de numeración decimal wikipedia , lookup

Decimal codificado en binario wikipedia , lookup

Transcript
ENSAMBLADOR
M.C. José Andrés Vázquez Flores
Primavera 2016
Introducción
• Un sistema de numeración es un conjunto de
símbolos y reglas de generación que permiten
construir todos los números válidos en el sistema.
• Un sistema de numeración puede representarse
como: N =(S,R)
donde:
• N es el sistema de numeración considerado.
• S es el conjunto de símbolos permitidos en el sistema.
• R son las reglas que nos indican qué números son
válidos en el sistema, y cuáles no.
Introducción
 Estas reglas son diferentes para cada sistema de
numeración considerado, pero una regla común a
todos es que para construir números válidos en un
sistema de numeración determinado sólo se
pueden utilizar los símbolos permitidos en ese
sistema.
 Para indicar en qué sistema de numeración se
representa una cantidad se añade como subíndice
a la derecha el número de símbolos que se pueden
representar en dicho sistema.
Representación
• Sea R (base o radio) un número mayor o igual que
2, entonces pueden representarse números entero
no negativos como una cadena de dígitos escogidos
entre 0, 1, 2, ..., R-1.
• La base de un sistema numérico es el número de
dígitos que pueden aparecer en cada posición en el
sistema numérico.
• Ejemplo: R=3 dígitos={0,1,2}
Conversión entre Bases
• Sea el número akak-1….a1, un entero en base R.
• Para convertir este número de base R a base Q
utilizamos la conversión:
• akRk-1+ak-1Rk-2+…+a1R0
Expresión 1
• Donde R es la base en la que se encuentra el
número (base actual), k es el número de dígitos
que conforman el número y Q es la nueva base (se
debe trabajar con aritmética en base Q).
Conversión entre Bases
• Convertir (100110)2  (
)10
• R=2, k=6, Q=10
• a6=1, a5=0, a4=0, a3=1, a2=1, a1=0
1*26-1+0*26-2+0*26-3+1*26-4+1*26-5+0*26-6=
1*25+0*24+0*23+1*22+1*21+0*20=
1*25+1*22+1*21 = 32+4+2 =
38
Conversión entre Bases
• Convertir (4302)5  ( )3
• R=5, Q=3, k=4
• a4=4, a3=3, a2=0, a1=2
• Se debe trabajar con aritmética en base 3, por lo
tanto necesitamos las tablas de
multiplicación en base 3.
4*53+3*52+0*51+2*50 =
En Base 3
11*123+10*122+2*120 =
11*11122+10*221+2*1 =
200112+2210+2 = 210101
suma
y
Conversión entre Bases
+
0
1
0
0
1
1
1
2
2
2
10
*
0
1
0
0
0
1
0
1
2
0
2
2
2
10
11
2
0
2
11
12*12
101
12
221
221*12
1212
221
11122
Conversión entre Bases
• Para pasar un número entero N de base 10 a base R
se deben realizar las siguientes operaciones:
• Dividir el número N en base 10 entre la base a convertir.
• Se toma el cociente Ci y se vuelve a dividir entre la base.
• Este proceso se continua hasta que el cociente Cn sea
menor que R.
• El número en base 10, se toma primero el último
cociente obtenido (Cn) y de ahí del último residuo al
primero.
Conversión entre Bases
R
C1
N
bm
C2
R C…
1
bm-1
Donde Cn<R
• El número en base R es:
Cn b1 … bm-1 bm
R
b1
Cn
Cn-1
Conversión entre Bases
• Convertir (541)10 ( )3.
180
60
20
3 541
3 180
3 60
24
00
00
01
• Por lo que (541)10 (202001)3.
6
3 20
2
2
3 6
0
Conversión entre Bases
 Para convertir la parte fraccionaria 0.d de base 10 a
base R, se procede:
 Se toma la fracción 0.d y se multiplica por la base.
 Del resultado obtenido di.bi se vuelve a tomar la fracción
0.bi y se procede de igual manera.
 Este proceso se puede continuar en n – iteraciones o
bien cuando la parte entera di sea cero.
 La parte entera di de los resultados, va a conformar la
fracción en base R.
Conversión entre Bases
0.d * R = d1.b1
0.b1 * R = d2.b2
…
0.bt * R = dt+1.bt+1
Donde dt+1 puede ser cero.
• La fracción en base R es:
0.d1 d2 d3 … dt dt+1
Conversión entre Bases
• Convertir (0.75)10  ( )2.
0.75 * 2 =1.5
La parte decimal ya es cero
0.5 * 2 = 1.0
• Por lo que (0.75)10  (0.11)2.
• Convertir (0.256)10  ( )7.
0.256 * 7 = 1.792
0.792 * 7 = 5.544
0.544 * 7 = 3.808
• Por lo que (0.256)10  (0.153)7
Conversión entre Bases
• Conversión de números de base R a base 10
(donde R10). Algoritmo 1.
• (Regla de Horner para la evaluación de polinomios)
1. i  k, num  0
2. Mientras i>=1 hacer
num  num*R+ai
i  i-1
fin_mientras
3. Fin
Conversión entre Bases
• Conversión de números de base 10 a base S
(donde S  10). Algoritmo 2.
1. i  1, q  0, p  0
2. Repetir
q  [x/s] (parte entera)
p  x-q*s (residuo)
ai  p, i  i+1, x  q
hasta q=0
3. Fin
Conversión entre Bases
• Conversión de números de base X a base 10
(donde X  10). Algoritmo 3.
• Números fraccionarios
1. i  m, num  0
2 .Mientras i>=1hacer
num  (num+bi)/X
i  i-1
fin_mientras
3. Fin
Conversión entre Bases
• Conversión de números de base 10 a base S
(donde S  10). Algoritmo 4.
• Números fraccionarios
1. i  1
2. Mientras i <= m hacer
x  x*s
y  [x] (parte entera)
x  x-y, bi  y, i  i+1
fin_mientras
3. Fin
Conversión entre Bases
 Conversión de potencias de 2
 Para convertir números de base 2 a base k=2x donde x>1 y
es un número entero, se llevan a cabo los siguientes
pasos:



Se agrupan de x en x los dígitos que se encuentran a la izquierda
del punto, comenzando a partir de él y aumentando ceros a la
izquierda cuando es necesario.
Se agrupan de x en x los dígitos que se encuentran a la derecha
del punto comenzando a partir de éste y aumentando ceros a la
derecha cuando sea necesario.
Se sustituyen los grupos por los dígitos correspondientes en la
base k.
Conversión entre Bases
(1110010100.011011)2  ( )16
Donde 16=24
0011 1001 0100 . 0110 1100
3
9
4 . 6
C
• Por lo que (1110010100.011011)2  (394.6C)16
• Para convertir números de base k=2x a base 2, se
sustituye cada dígito en base k por los x dígitos
binarios correspondientes.
(7402.61)8  ( )2
Donde 8=23
7 4
0
2 . 6
1
111 100 000 010 . 110 001
• Por lo que (7402.61)8  (111100000010.110001)2
Operaciones
Aritméticas
• Existen varias operaciones aritméticas
que se
pueden ejecutar en números binarios y
hexadecimales, por ejemplo, se puede sumar,
restar, multiplicar, dividir y otras operaciones
aritmética.
• Suma y multiplicación en binario:
+
0
1
0
0
1
1
1
10
Carry o acarreo
*
0
1
0
0
0
1
0
1
Operaciones Aritméticas
• Ejemplo:
1011011010110
+ 1101110110100
11001010001010
11000110001001
- 10000101101110
01000000011011
11011101010101
+ 11110010101101
111010000000010
11001101110001
- 10011000101001
00110101001000
Operaciones Aritméticas
• Para la multiplicación y división:
10010011*110010
100100110
1001001100
10010011
1110010110110
1011010
1001 1100101110
1110
1011
1011
100
Tabla de suma en base 16
+
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
1
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10
2
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10
11
3
3
4
5
6
7
8
9
A
B
C
D
E
F
10
11
12
4
4
5
6
7
8
9
A
B
C
D
E
F
10
11
12
13
5
5
6
7
8
9
A
B
C
D
E
F
10
11
12
13
14
6
6
7
8
9
A
B
C
D
E
F
10
11
12
13
14
15
7
7
8
9
A
B
C
D
E
F
10
11
12
13
14
15
16
8
8
9
A
B
C
D
E
F
10
11
12
13
14
15
16
17
9
9
A
B
C
D
E
F
10
11
12
13
14
15
16
17
18
A
A
B
C
D
E
F
10
11
12
13
14
15
16
17
18
19
B
B
C
D
E
F
10
11
12
13
14
15
16
17
18
19
1A
C
C
D
E
F
10
11
12
13
14
15
16
17
18
19
1A
1B
D D
E
F
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
E
E
F
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
F
F
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
Tabla de multiplicar en base 16
*
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
2
0
2
4
6
8
A
C
E
10
12
14
16
18
1A
1C
1E
3
0
3
6
9
C
F
12
15
18
1B
1E
21
24
27
2A 2D
4
0
4
8
C
10
14
18
1C
20
24
28
2C
30
34
38
3C
5
0
5
A
F
14
19
1E
23
28
2D
32
37
3C
41
46
4B
6
0
6
C
12
18
1E
24
2A
30
36
3C
42
48
4E
54
5A
7
0
7
E
15
1C
23
2A
31
38
3F
46
4D
54
5B
62
69
8
0
8
10
18
20
28
30
38
40
48
50
58
60
68
70
78
9
0
9
12
1B
24
2D
36
3F
48
51
5A
63
6C
75
7E
87
A
0
A
14
1E
28
32
3C
46
50
5A
64
6E
78
82
8C
96
B
0
B
16
21
2C
37
42
4D
58
63
6E
79
84
8F
9A
A5
C
0
C
18
24
30
3C
48
54
60
6C
78
84
90
9C A8
B4
D
0
D
1A
27
34
41
4E
5B
68
75
82
8F
9C A9
E
0
E
1C
2A
38
46
54
62
70
7E
8C 9A A8
B6
C4 D2
F
0
F
1E
2D
3C
4B
5A
69
78
87
96
C3
D2
A5
B4
B6
C3
E1
Números
Negativos
 Signo y Magnitud: En esta representación, el dígito
más significativo indicará el signo del número, esto
es, el 1 representa un valor negativo y el 0 un valor
positivo y los restantes dígitos serán la magnitud.
 Representación a 4 dígitos:
0000  +0
0001  +1
0010  +2
0011  +3
0100  +4
0101  +5
0110  +6
0111  +7
1000  -0
1001  -1
1010  -2
1011  -3
1100  -4
1101  -5
1110  -6
1111  -7
Números Negativos
 Algoritmo de suma y resta:
Sean an an-1 … a0 y bn bn-1 … b0 números binarios en signo
y magnitud.
2. Tienen signos iguales? (an = bn)
Si: Sumar las magnitudes quedando el resultado en:
cn-1 … c0 y cn  an  bn.
No: Comparamos magnitudes y dejamos en cn el signo
del mayor. Restamos a la magnitud mayor la menor y el
resultado queda en cn-1 … c0.
3. La magnitud cn-1 … c0 excede el rango?
Si: Indicar un error (Overflow)
No: el resultado en cn cn-1 … c0.
1.
Números
Negativos
 Complemento a 1 (C´1): Esta representación
se obtiene para los números negativos y se
realiza en base al número positivo en binario
convirtiendo los 0 en 1 y los 1 en 0.
 Representación a 4 dígitos:
0000  +0
0001  +1
0010  +2
0011  +3
0100  +4
0101  +5
0110  +6
0111  +7
1111  -0
1110  -1
1101  -2
1100  -3
1011  -4
1010  -5
1001 -6
1000 -7
Números Negativos
 Algoritmo de suma y resta:
1. Tomar el C´1 de los números negativos.
2. Sumar los operandos.
3. Existe carry?
Si: Sumar uno al resultado.
4. Hay overflow?
Si: Indicar un error (Overflow)
No: el resultado en cn cn-1 … c0.
Números
Negativos
 Complemento a 2 (C´2): Esta representación
se obtiene para los números negativos y se
obtiene efectuando primero el C´1 y después
sumar uno.
 Representación a 4 dígitos:
0000  +0
0001  +1
0010  +2
0011  +3
0100  +4
0101  +5
0110  +6
0111  +7
0000  -0
1111 -1
1110  -2
1101  -3
1100  -4
1011  -5
1010 -6
1001 -7
1000  -8
Números Negativos
 Algoritmo de suma y resta:
1. Tomar el C´2 de los números negativos.
2. Sumar los operandos.
3. Se toman n (menos significativas) posiciones
si hay carry.
4. Hay overflow?
Si: Indicar un error (Overflow)
Operaciones Lógicas
• Conjunción
(.) p.q
p
q
p
Disyunción
(+)
q
p+q
1
1
1
1
1
1
1
0
0
1
0
1
0
1
0
0
1
1
0
0
0
0
0
0
• Negación
p
-p(-)
p Or- exclusivo
q
pq
1
0
1
1
0
0
1
1
0
1
0
1
1
0
0
0
()
Códigos
 Toda
la información en la computadora es
almacenada en dígitos binarios, los cuales son
representados por medio de un agrupamiento de los
mismos como caracteres de instrucciones o
números.
 Estos agrupamientos definen códigos, de ahí que un
código pueda definirse como un conjunto de reglas
para interpretar grupos de bits.
Códigos
 BIT:
Dígito binario, es una celda de
almacenamiento, se puede almacenar un 0 o un 1.
 BYTE: Unidad de almacenamiento equivalente a 8
bits.
 Código ASCII: Acrónimo inglés de American
Standard Code for Information Interchange, es un
código de caracteres basado en el alfabeto latino tal
como se usa en inglés moderno y en otras lenguas
occidentales. Fue creado en 1963.
Código
 EBCDIC:
Extended Binary Coded Decimal
Interchange Code, es un código estándar de 8 bits
usado por computadoras mainframe IBM. EBCDIC
es un código binario que representa caracteres
alfanuméricos, controles y signos de puntuación.
 Código Gray: Es un sistema de numeración binario
en el que dos valores sucesivos difieren solamente en
uno de sus dígitos. Fue diseñado para prevenir
señales de los switches electromecánicos.
Actualmente es usado para facilitar la corrección de
errores en los sistemas de comunicaciones.