43 M.C. José Andrés Vázquez FloresBenemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación ENSAMBLADOR M.C. José Andrés Vázquez Flores Primavera 2013
44 Sistemas de Numeración
45 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. N p.ej. decimal, binario, etc. S En el caso del sistema decimal son {0,1...9}; en el binario son {0,1}; en el octal son {0,1...7}; en el hexadecimal son {0,1...9,A, B, C, D, E, F} R En un sistema de numeración posicional las reglas son bastante simples, mientras que la Numeración romana requiere reglas algo más elaboradas.
46 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.
47 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}
48 Conversión entre BasesSea 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+…+a1R 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). Representación polinomial (expresión 1)
49 Conversión entre BasesConvertir (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 = = 38
50 Conversión entre BasesConvertir (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 suma y multiplicación en base 3. 4*53+3*52+0*51+2*50 = 11*123+10*122+2*120 = 11* *221+2*1 = = En Base 3
51 Conversión entre Bases+ 1 2 * 10 11 12*12 101 12 221 221*12 1212 221 11122
52 Conversión entre BasesPara 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.
53 Conversión entre BasesC C Cn R N R C1 R Cn-1 bm bm b1 Donde Cn
54 Conversión entre BasesConvertir (541)10 ( )3. 01 Por lo que (541)10 (202001)3.
55 Conversión entre BasesPara 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.
56 Conversión entre Bases0.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
57 Conversión entre BasesConvertir (0.75)10 ( )2. 0.75 * 2 =1.5 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 La parte decimal ya es cero
58 Conversión entre BasesConversió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
59 Conversión entre BasesConversió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
60 Conversión entre BasesConversió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
61 Conversión entre BasesConversió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
62 Conversión entre BasesConversió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.
63 Conversión entre Bases( )2 ( ) Donde 16=24 C Por lo que ( )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. ( )8 ( )2 Donde 8=23 Por lo que ( )8 ( )2
64 Operaciones AritméticasExisten 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: + 1 * 10 Carry o acarreo
65 Operaciones AritméticasEjemplo:
66 Operaciones AritméticasPara la multiplicación y división: * 100
67 Tabla de suma en base 16 + 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 131 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E Tabla de suma en base 16
68 Tabla de multiplicar en base 16* 1 2 3 4 5 6 7 8 9 A B C D E F 10 12 14 16 18 1A 1C 1E 15 1B 21 24 27 2A 2D 20 28 2C 30 34 38 3C 19 23 32 37 41 46 4B 36 42 48 4E 54 5A 31 3F 4D 5B 62 69 40 50 58 60 68 70 78 51 63 6C 75 7E 87 64 6E 82 8C 96 79 84 8F 9A A5 90 9C A8 B4 A9 B6 C3 C4 D2 E1 Tabla de multiplicar en base 16
69 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
70 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. 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. La magnitud cn-1 … c0 excede el rango? Si: Indicar un error (Overflow) No: el resultado en cn cn-1 … c0.
71 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
72 Números Negativos Algoritmo de suma y resta:Tomar el C´1 de los números negativos. Sumar los operandos. Existe carry? Si: Sumar uno al resultado. Hay overflow? Si: Indicar un error (Overflow) No: el resultado en cn cn-1 … c0.
73 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
74 Números Negativos Algoritmo de suma y resta:Tomar el C´2 de los números negativos. Sumar los operandos. Se toman n (menos significativas) posiciones si hay carry. Hay overflow? Si: Indicar un error (Overflow)
75 Operaciones Lógicas Conjunción (.) Disyunción (+)Negación (-) Or- exclusivo () p q p.q p+q 1 p -p q pq 1
76 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.
77 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.
78 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.