Download Sistemas de Numeración - Facultad de Ciencias de la Computación
Document related concepts
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 R10). 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 pq 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.