Sistemas Digitales Sistemas numéricos Sistemas numéricos Prof. Mario Medina [email protected] Números en base 10 Base usada día a día y natural para el ser humano 10 dígitos (símbolos) : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Notación posicional Representación posicional Números en base 10 Números en bases 2, 8 y 16 Conversión de enteros y decimales entre bases Operaciones aritméticas en base 2 Representando números negativos en base 2 Representación con magnitud y signo Suma y resta en complemento a 2 Notación posicional o ponderada La ponderación de cada dígito o símbolo está asociada a su posición Sistemas ponderados regulares Valor del dígito dado por la posición 1234 = 1000 + 200 + 30 + 4 1234 = 1 • 103 + 2 • 102 + 3 • 101 + 4 • 100 12,34 = 1 • 101 + 2 • 100 + 3 • 10-1 + 4 • 10-2 Sistemas ponderados no regulares Un número N en base b se escribe Nb = an-1an-2. . . a1a0,a-1a-2. . .a-m+1a-m La coma separa la parte entera de la parte fraccionaria En algunos países se utiliza el punto Tiene n dígitos en su parte entera Tiene m dígitos en su parte fraccionaria Ejemplo: 34,342 Números romanos (I, V, X, L, C, M) Notación posicional regular El valor de un número N en la base b se evalúa según la formula Nb = an-1bn-1 + an-2bn-2 + . . . + a1b1 + a0b0 + a-1b-1 + a-2b-2 + . . . + a-m+1b-m+1 + a-mb-m donde: b≥2, base del sistema numérico ai, dígito entre 0 y b-1 n-1: máximo exponente en la parte entera -m: mínimo exponente en la parte fraccionaria © 2014 Mario Medina C. Equivale a ((H1×10+H0)×60+M1×10+M0)×60+S1×10+S0 Sistemas no ponderados Notación horaria H1H0 : M1M0 : S1S0 Notación posicional regular Ponderación corresponde a potencias sucesivas de un valor base b an-1: Most Significant Digit (MSD) a-m: Least Significant Digit (LSD) 1 Sistemas Digitales Bases más comunes Binario Ternario Octal Hexa 0 0 0 0 0 1 1 1 1 1 2 10 2 2 2 3 11 10 3 3 4 100 11 4 4 5 101 12 5 5 6 110 20 6 6 7 111 21 7 7 8 1000 22 10 8 9 1001 100 11 9 10 1010 101 12 A Corriente circula / no circula 11 1011 102 13 B 12 1100 110 14 C Transistor conduce / no conduce 13 1101 111 15 D 14 1110 112 16 E 15 1111 120 17 F Números en base 2 Porqué usar base 2? Decimal Sólo 2 dígitos, 0 y 1 Toda información se traduce a código binario Fácil detección de estados Fácil de implementar Sólo requiere 2 dígitos: 0 y 1 Compuerta está abierta / cerrada Números en base 8 Variable binaria es un Bit (Binary Digit) Nombre dado por John Tukey 110012 = 100002 + 10002 + 12 110012 = 1 24 + 1 23 + 1 20 110012 = 16 + 8 + 1 = 25 Equivalente a base 2 Representación más fácil y compacta Usa dígitos 0-9, A-F 36F016 = 3 163 + 6 162 + 15 161 = 1406410 Representación más fácil y compacta Usa dígitos 0-7 36708 = 3 83 + 6 82 + 7 81 = 197610 Porque 8 es 23 Agrupar bits de derecha a izquierda de 3 en 3 001 101 010 1102 = 15268 Potencias de 2 Fácil conversión entre base 2 y base 16 24 Porque 16 es Agrupar bits de derecha a izquierda de 4 en 4 0011 1101 1010 01102 = 3DA616 © 2014 Mario Medina C. Fácil conversión entre base 2 y base 8 Operaciones aritméticas: +, -, * Operaciones lógicas: AND, OR, XOR, NOT Números en base 16 Equivalente a base 2 Valor del dígito dado por la posición Computadores digitales usan base 2 20 = 1 21 = 2 22 = 4 23 = 8 24 = 16 25 = 32 26 = 64 27 = 128 28 = 256 29 = 512 210 = 1024 (1 Kilo) 220 = 1024K (1 Mega) 230 = 1024M (1 Giga) 240 = 1024G (1 Tera) 250 = 1024T (1 Peta) 260 = 1024P (1 Eta) 270 = 1024E (1 Zetta) 280 = 1024Z (1 Yotta) 2 Sistemas Digitales Prefijos estándar IEC Convertir base 10 a base 2 No confundir 1 Kilo (1000) con 1 Kilo (1024) Divisiones sucesivas 1 Kilo de papas = 1000 gramos = 103 gramos 1 Kilo de bytes = 1024 bytes = 210 bytes En computación, Kilo se usa para 1024 Prefijos estándares IEC 210: Kibi (Ki) 220: Mebi (Mi) 230: Gibi (Gi) 240: Tebi (Ti) Conversión de enteros Convertir entero Mb a base d Dividir Mb por la nueva base d usando la aritmética Se obtiene un cuociente S y un resto r El resto de la división es el coeficiente c0 Repetir la división del cuociente S por la base Terminar cuando el cuociente de la división es 0 de la base original Pasos a seguir Multiplicar el dígito más significativo por la base b Sumarle el dígito siguiente Multiplicar el resultado por la base b Repetir hasta que se haya sumado el último dígito Ejemplo: 74218 a base 10 Evaluar (((7*8) + 4)*8 + 2)*8 + 1 Evaluar ((56+ 4)*8 + 2)*8 + 1 Evaluar (60*8 + 2)*8 + 1 Evaluar (480 + 2)*8 + 1 Evaluar 482*8 + 1 = 385710 Cómo convertir de base 10 a otras bases? 289:2 = 144 + 1/2 144:2 = 72 + 0/2 72:2 = 36 + 0/2 36:2 = 18 + 0/2 18:2 = 9 + 0/2 9:2 = 4 + 1/2 4:2 = 2 + 0/2 2:2 = 1 + 0/2 1:2 = 0 + 1/2 Resultado: 1001000012 Conversión de enteros Conversion de base b a base 10 Evaluar las potencias y la sumatoria Método de los productos sucesivos Conversión de base b a base d Proceso más complejo Operaciones aritméticas en la base original b Recomendado: Convertir el número original de base b a base 10 Convertir 28910 a base 2 Cada nuevo resto corresponde a un nuevo ci Método de los productos sucesivos Procesa termina cuando resultado es 0 Retener los restos de las divisiones El primer resto calculado es el bit menos significativo b0 Convertir el resultado anterior en base 10 a base d Considerar la escritura formal de un número en base d Conversión de enteros Ejemplos: Convertir 79310 a base 8 Convertir 1210 a base 2 Convertir 538 a base 5 793 1 99 3 12 4 1 1 99 12 1 0 1431 8 8 8 10 8 10 8 10 8 10 8 10 8 10 8 10 © 2014 Mario Medina C. 12 0 6 0 3 1 1 1 0 0 6 3 1 0 0 01100 2 2 2 10 2 10 2 10 2 10 2 10 2 10 2 10 2 10 2 10 3 Sistemas Digitales Conversión de fracciones Proceso de multiplicaciones sucesivas Conversión de fracciones Proceso termina cuando la precisión del resultado es equivalente Proceso termina cuando se alcanza la precisión buscada El primer rebalse calculado es el bit más significativo b-1 Resultado es 0.11001001102 Convertir 0.78810 a base 2 Terminar cuando las precisiones de Nb y Nd sean equivalentes 123.45610 a base 2 La parte entera es el coeficiente c-1 Cada nueva parte entera es un nuevo ci Conversión de fracciones por restas sucesivas 0.788*2 = 1.576 = 1 + 0.576 0.576*2 = 1.152 = 1 + 0.152 0.152*2 = 0.304 = 0 + 0.304 0.304*2 = 0.608 = 0 + 0.608 0.608*2 = 1.216 = 1 + 0.216 0.216*2 = 0.432 = 0 + 0.432 0.432*2 = 0.864 = 0 + 0.864 0.864*2 = 1.728 = 1 + 0.728 0.728*2 = 1.456 = 1 + 0.456 0.456*2 = 0.912 = 0 + 0.912 Ejercicios Multiplicar nuevamente la fracción f por la base Se busca el entero superior: x = 10 Multiplicaciones sucesivas log10 9.96 log2 Conversión de fracciones Se obtiene una parte entera E y una fracción f Precisión original: Precisión deseada: 2-x x 3 Multiplicar N por la nueva base d usando la 10-3 Nb a 1b1 a mbm aritmética de la base original Ejemplo: convertir 0.78810 a base 2 Convertir número Nb a base d Restas sucesivas de potencias decrecientes de 2 Si la resta da resultado positivo, se genera un dígito binario 1 Si la resta da resultado negativo, ésta no se realiza y se genera un dígito binario 0 Ejemplo: convertir 0.742110 a base 2 0.7421 – 2-1 = 0.7421 – 0.5 = 0.2421 a-1 = 1 0.2421 – 2-2 = 0.2421 – 0.25 = -0.0079 a-2 = 0 0.2421 – 2-3 = 0.2421 – 0.125 = 0.1171 a-3 = 1 0.1171 – 2-4 = 0.1171 – 0.0625 = 0.00546 a-4 = 1 Aritmética en base 2 678.90110 a base 2 Suma binaria + 0 0 0 1 1 1 1 10 Suma binaria puede generar un rebalse o acarreo (carry) Carry in: proviene del dígito de menor ponderación (i-1) Carry out: generado hacia el dígito de mayor ponderación (i+1) © 2014 Mario Medina C. 4 Sistemas Digitales Operaciones aritméticas en base 2 Tabla de suma en base 2 Resta binaria (x – y) x y cin cout x+y 0 0 0 0 0 - y=0 y=1 0 0 1 0 1 x=0 0 1* 0 1 0 0 1 x=1 1 0 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 Tabla de resta en base 2 Resta binaria puede necesitar un préstamo (borrow) Borrow in: préstamo que proviene del dígito de menor ponderación (i-1) Borrow out: préstamo generado para el dígito de mayor ponderación (i+1) Ejemplo de resta binaria x y bin bout x-y 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 Ejercicios: resta binaria - © 2014 Mario Medina C. 0 0 1 0 0 1 0 1 1 Minuendo Sustraendo Diferencia En la práctica no se utiliza Se prefiere realizar una suma con el sustraendo complementado Desplazamiento a la izquierda Equivalente a multiplicar por 2 01102 11002 01012 10102 (610 1210) (510 1010) Desplazamiento a la derecha 10110010 111101 01110101 1 1 1 Desplazamiento de bits 1110110 - 111101 0111001 0 1 0 Resta binaria es un proceso largo y muy propenso a errores 1 11 1 0 1 0 0 10 0 0 1 1 1 1 01 0 1 1 0 1 1 0 0 Equivalente a dividir por 2 01102 00112 01012 00102 (610 310) (510 210) División aproxima resultados a entero inferior 5 Sistemas Digitales Multiplicación y división por la base Equivalente a desplazar los coeficientes una posición a la izquierda, llenándo el LSD con 0 Sea el entero Entonces, Nb b a n1bn a n2bn1 a 0b1 0b0 División por la base equivale a desplazamiento a la derecha 10112x11012 1011 0000· 1011·· 1011··· 100011112 11012x101012 ??? Aritmética en otras bases Suma octal + 0 1 2 3 4 5 6 7 0 0 1 2 3 4 5 6 7 1 1 2 3 4 5 6 7 10 2 2 3 4 5 6 7 10 11 3 3 4 5 6 7 10 11 12 4 4 5 6 7 10 11 12 13 5 5 6 7 10 11 12 13 14 6 6 7 10 11 12 13 14 15 7 7 10 11 12 13 14 15 16 1 626 5338 13618 Restar A − B equivale a sumar A + (−B) Qué valor toma (−B) para un número en binario? Sea Nb un número en base b Nb a k b k k 0 Se define el complemento a la base [Nb] como N b b n N b Números fraccionarios N f b b 0 N f b © 2014 Mario Medina C. Préstamo 6 3 (9) (8) 6 1 Suma decimal parcial - base Suma octal Notación complemento a 2: [n]2 n 1 1 6 2 5 3 (11) (6) (8) 1 3 Ejercicio: sumar los octales 626 y 533 Sistemas complementarios Equivalente a realizar desplazamientos y sumas Generalización de lo que ocurre en base 10 Aritmética en otras bases Nb a n1bn1 a n2bn2 a 0b0 Multiplicación en base 2 En base 2, se tiene N2 2n N2 Codificación usada para representar números negativos en base 2 Para números fraccionarios, se tiene que Nf 2 1 Nf 2 0,10112 1 0,1011 0,01012 6 Sistemas Digitales Sistemas complementarios Sistemas complementarios Ejercicios: Complemento a 10 del decimal 1279 1 - 0 1 8 0 2 7 0 7 2 0 9 1 104 N10 Complemento a 2 de 1001010010 1 0 0 0 0 0 0 0 0 0 0 - 1 0 0 1 0 1 0 0 1 0 0 1 1 0 1 0 1 1 1 0 N 2 210 N2 Complemento a 8 del octal 342 1 - 0 3 4 0 4 3 0 2 6 83 N8 Métodos de cálculo de complemento a 2 Porqué usar complemento a 2? Dos métodos: 1. Invertir cada bit del número original y sumar 1 al resultado Ejemplo: [1101001]2 = 00101102 + 12 2. Complemento a 2 simplifica la resta de números binarios Convierte la resta de dos números en una suma X2 – Y2 = X2 + [Y]2 Pero, hay dos casos dependiendo de la presencia de rebalses Partiendo del bit menos significativo, copiar los bits hasta encontrar el primer 1. Luego, complementar el resto de los bits Ejemplo: [110100100]2 = 0010111002 Restas en complemento a 2 1110112 – 1001102 es equivalente a sumar 1110112 + [100110]2 1110112 + [100110]2 es 1110112 + 0110102 lo que es igual a 10101012 Hubo un rebalse, por lo que 0101012 es el resultado correcto y el rebalse se ignora Comprobación: 1110112 – 1001102 , lo que es 5910 – 3810 = 2110 que en base 2 es 101012 © 2014 Mario Medina C. Qué pasa si no hay rebalse? 1001102 – 1110112 es equivalente a sumar 1001102 + [111011]2 Esto es 1001102 + 0001012 lo que da 1010112 No hubo rebalse: el resultado correcto es el complemento del resultado con signo negativo, es decir,- [101011]2 = -0101012 Comprobación: 1001102 – 1110112, lo que es 3810 – 5910 = -2110 que en base 2 es -101012 7 Sistemas Digitales Resta binaria complementaria Por qué? (A)2 + [B]2 equivale a (A)2 + Signo de un número binario 2n − (B)2 Si (A)2 > (B)2, resultado es positivo mayor que 2n Se consideran solo los n bits menos significativos del resultado Si (A)2 < (B)2, resultado generado es menor que 2n Resultado es igual a −((B)2−(A)2), valor que se puede conocer complementando el resultado Se quiere ahora representar el signo de un número en un bit adicional a la izquierda del número Si el MSB de un numero es 1, el numero es negativo Si el MSB de un numero es 0, el numero es positivo Un número binario de n bits en notación con signo tiene la estructura Signo 1 bit Rebalses Definición de rebalses Rebalse aritmético: generado al pasar un rebalse desde el MSB del módulo al bit de signo Rebalse lógico: rebalse desde el bit de signo al exterior En un resta pueden darse 4 casos, dependiendo de la existencia o ausencia de estos rebalses Rebalse aritmético (4 + 4) Si existen ambos rebalses o si no existe ninguno de ellos Error! Resultado correcto es 0 10002 Hay error Si la suma de dos números de distinto signo excede la capacidad de representación Hay error Rebalse lógico Rebalse lógico (-5-7) 1 0112 1 0012 10 1002 Resultado obtenido es -8 La operación excede representación de 3 bits No hay error Si la suma de dos números del mismo signo tiene el signo opuesto a éstos 0 1002 0 1002 1 0002 Magnitud se almacena en complemento a 2 Rebalses en sumas Rebalse aritmético en sumas Magnitud en comp. a 2 n-1 bits Error! Resultado correcto es 1 01002 = -1210 Resultado obtenido es +4 Operación excede representación de 3 bits Solución: ampliar la representación de los números agregando otro bit al módulo © 2014 Mario Medina C. 8 Sistemas Digitales Rebalse aritmético y lógico Operación sin rebalse Rebalse lógico y aritmético (-3-2) No hay rebalse (3+2) 1 1012 1 1102 11 0112 0 0112 0 0102 0 1012 Resultado correcto es 1 0112 = -510 Se ignora el rebalse lógico Rebalse aritmético es el nuevo bit de signo Representación de números con módulo y signo Complemento a la base disminuida Decimal Binario -8 -7 -6 -5 -4 -3 -2 -1 1000 1001 1010 1011 1100 1101 1110 1111 Decimal Binario 0 1 2 3 4 5 6 7 0000 0001 0010 0011 0100 0101 0110 0111 Complemento a 1 En el sistema binario, el complemento a 1 de un número se obtiene complementando cada bit, es decir, intercambiando 1s y 0s. Ejemplo: Complemento a 1 de 110101101 1 1 0 1 0 1 1 0 1 N2 0 0 1 0 1 0 0 1 0 N1 Resultado correcto es 0 1012 = 510 Sea el número entero Nb a n1bn1 a n2bn2 a 0b0 Se define el complemento a la base disminuida como Nb1 bn 1 Nb Nb 1 Si N tiene parte entera y fraccionaria, esto es Nb 1 bn b m N b Nb b m Complemento a 1 En el sistema binario, el complemento a 1 de un número se obtiene complementando cada bit, es decir, intercambiando 1s y 0s. Ejemplo: [110101101]1 = 0010100102 El complemento a 2 de un número binario N es el complemento a 1 del número + 1 [N]2 = [N]1 + 1 © 2014 Mario Medina C. 9 Sistemas Digitales Complementos a 2 y a 1 Binario 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Decimal positivo Comp. a 1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 -7 9 -6 10 -5 11 -4 12 -3 13 -2 14 -1 15 -0 Comp. a 2 0 1 2 3 4 5 6 7 -8 -7 -6 -5 -4 -3 -2 -1 Rangos de representación Número de n bits puede representar 2n-1 números positivos y 2n-1 números negativos Rango: -2n-1 a (2n-1 – 1) 4 bits: -8 a 7 8 bits: -128 a 127 16 bits: -32 768 a 32 767 32 bits: -2 147 483 648 a 2 147 483 647 Un poco de humor Valor de un número binario de n bits Número binario de n bits puede representar 2n símbolos diferentes Sólo enteros positivos Enteros positivos y negativos Rango de 0 a 2n-1 Usando complemento a 1: rango de -2n-1 +1 a 2n-1 -1 Siempre hay 2 ceros en complemento a 1! Usando complemento a 2: rango de -2n-1 a 2n-1 -1 Las mismas secuencias de bit se interpretan de manera diferente Representación de números con signo 4 bits pueden representar 16 valores 01112 = 710 00002 = 010 11112 = -110 10002 = -810 8 bits pueden representar 256 valores 011111112 = 12710 000000002 = 010 111111112 = -110 100000002 = -12810 • En notación con signo usando complemento a 2, 01….11 es siempre 2n-1-1, 11……11 es siempre –1 y 10….00 es siempre –2n-1 Hay 10 tipos de personas . . . En Japón, enseñan a contar digitalmente de esta forma en las escuelas! © 2014 Mario Medina C. 10 Sistemas Digitales Futurama © 2014 Mario Medina C. 11