Sistemas de Numeración Operaciones - Códigos Tema 2 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Sistema decimal Sistema binario Sistema hexadecimal Sistema octal Conversión decimal binario Aritmética binaria Complemento a la base-1, Complemento a la base-2 Números con signo Operaciones aritméticas de números con signo Representación en Exceso Representación interna: IEEE 754 Códigos digitales Detección de errores y códigos de corrección Sistemas posicionales de numeración ¿Qué es un sistema de numeración posicional? 1234,56 = 1·1000 + 2·100 + 3·10 + 4·1 + 5·0,1 + 6·0,01 TEOREMA FUNDAMENTAL DE LA NUMERACIÓN La fórmula general para construir un número (cualquier número) N en un sistema de numeración posicional de base b es la siguiente: Dr. Oscar Ruano - 2011-2012 2 Sistema decimal El sistema decimal es un sistema de numeración posicional, por lo que el valor del dígito depende de su posición dentro del número. Es sistema decimal usa diez dígitos para expresar los números La posición de cada dígito en un número decimal indica la magnitud de la cantidad representada y se asignan pesos: Base = {0,1,2,3,4,5,6,7,8,9} = base 10 Teorema fundamental para sistemas decimales: ENTEROS: ... 105 104 103 102 101 100 FRACCIONARIOS: 102 101 100 , 10-1 10-2 10-3 ... El valor de un número decimal es la suma de los dígitos después de haber multiplicado cada dígito por su peso. Dr. Oscar Ruano - 2011-2012 3 Sistema binarios El sistema binario es un sistema de numeración posicional al igual que el decimal visto con anterioridad. Únicamente emplea 2 dígitos (bits) El valor de un bit se determina por su posición dentro del número Es un sistema de Base={0,1}=base 2 Teorema fundamental para sistemas binarios: El bit más a la derecha es el bit menos significativo (LSB Least Significant Bit) en un número entero binario y su peso es de 20 = 1. El bit más a la izquierda es el bit más significativo (MSB Most Significant Bit) y su peso depende del tamaño del número binario. ENTEROS: 2n-1…22 21 20 FRACCIONARIOS: 2n-1…22 21 20 , 2-1 2-2 … 2-n En general con n bits podemos contar hasta un número igual a 2n-1 n=5 ..................... 25-1 = 32 – 1 = 31 Dr. Oscar Ruano - 2011-2012 4 Sistema binario Dr. Oscar Ruano - 2011-2012 5 Números hexadecimales Consta de 16 símbolos {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} base 16 Los números tiene un valor de posición característico: sistema posicional Dr. Oscar Ruano - 2011-2012 6 Números hexadecimales Dr. Oscar Ruano - 2011-2012 7 Conversión decimal - hexadecimal Método útil para convertir un decimal a binario, octal … Dr. Oscar Ruano - 2011-2012 8 Conversión hexadecimal - decimal Dr. Oscar Ruano - 2011-2012 9 Conversión binario - hexadecimal Dr. Oscar Ruano - 2011-2012 10 Conversión hexadecimal - binario Nota: sumar y restar igual que en complemento a 2 Dr. Oscar Ruano - 2011-2012 11 Números octales Consta de 8 símbolos {0, 1, 2, 3, 4, 5, 6, 7, 8} base 8 Dr. Oscar Ruano - 2011-2012 12 Conversión binario - octal Dr. Oscar Ruano - 2011-2012 13 Conversión octal - binario Dr. Oscar Ruano - 2011-2012 14 Conversión binario a decimal El valor decimal de cualquier número decimal binario puede hallarse sumando los pesos de todos los bits que están a 1 y descartando los pesos de todos los bits que son 0. Convertir el número entero binario 1101101 a decimal Convertir el número binario fraccionario 0,1011 a decimal Binary 1 Decimal 32 + 16 + 0 + 0 + 2 + 1 = 51 1 0 Dr. Oscar Ruano - 2011-2012 0 1 1 15 Conversión decimal a binario Método de la suma de pesos Este método consiste en determinar el conjunto de pesos binarios cuya suma equivalga al número decimal. Convertir el número 15310 a binario. 15310 = 27 + 24 + 23 + 20 = 128 + 16 +8 +1 15310= 100110012 Método de la división sucesiva por 2 (método visto con anterioridad) Se va dividiendo la cantidad decimal por 2, apuntando los residuos, hasta obtener un cociente cero. El último residuo obtenido es el bit más significativo (MSB) y el primero es el bit menos significativo (LSB). Dr. Oscar Ruano - 2011-2012 16 Conversión decimal a binario Divide by 2 Process Decimal # 13 ÷ 2 = 6 remainder 1 6 ÷ 2 = 3 remainder 0 3 ÷ 2 = 1 remainder 1 Divide-by-2 Process Stops When Quotient Reaches 0 1 ÷ 2 = 0 remainder 1 1 Dr. Oscar Ruano - 2011-2012 1 0 1 17 Codificadores y Decodificadores Binary output Decimal input 7 5 3 0 01 00 0 11 Decimal to Binary Encoder Binary input 01 00 10 1 Decimal output Binary-to7-Segment Decoder/ Driver Dr. Oscar Ruano - 2011-2012 18 Conversión de fracciones decimales a binario Suma de pesos Emplea la misma metodología de la suma de potencias de 2 pero se trabaja con potencias negativas. Convertir el número 0,87510 a binario. 0,87510 = (2-1) + (2-2) + (2-3) = 0,5 + 0,25 + 0,125 = 0,1112 Multiplicación sucesiva por 2 La conversión de números decimales fraccionarios a binario se realiza con multiplicaciones sucesivas por 2. El número decimal se multiplica por 2, de éste se extrae su parte entera, el cual va a ser el MSB y su parte fraccional se emplea para la siguiente multiplicación y seguimos sucesivamente hasta que la parte fraccional se vuelva cero o maneje un error moderado. El último residuo o parte entera va a constituir el LSB. Convertir el número 0,87510 a binario. Dr. Oscar Ruano - 2011-2012 19 Dr. Oscar Ruano - 2011-2012 20 Aritmética binaria: Suma Reglas fundamentales para la suma 0 + 0 = 0 Suma 0 con acarreo 0 0 + 1 = 1 Suma 1 con acarreo 0 1 + 0 = 1 Suma 1 con acarreo 0 1 + 1 = 10 Suma 0 con acarreo 1 Ejemplos: 210 + 510 = 710 010 + 101 = 111 001101 + 100101 = 110010 1310 + 3710 = 50100 Dr. Oscar Ruano - 2011-2012 21 Aritmética binaria: Resta Reglas fundamentales para la resta 0–0=0 1–0=1 1–1=0 10 – 1 = 1 ; 0-1 con acarreo negativo de 1 Ejemplos: 111 – 101 = 010 10001 – 01010 = 00111 710 – 510 = 210 1710 – 1010 = 710 Comprobación: A – B = C ; C + B = A Dr. Oscar Ruano - 2011-2012 22 Aritmética binaria: Multiplicación Reglas fundamentales para la multiplicación La multiplicación binaria es tan sencilla como la decimal, y es que funcionan de la misma manera Ejemplo: Dr. Oscar Ruano - 2011-2012 23 Aritmética binaria: División Reglas fundamentales para la división 0/0 No permitido 1/0 No permitido 0/1 0 1/1 1 El procedimiento de división continúa del mismo modo que en el sistema decimal. Ejemplos: Dr. Oscar Ruano - 2011-2012 24 Cuadro Resumen Operaciones Dr. Oscar Ruano - 2011-2012 25 Formato signo-magnitud Dr. Oscar Ruano - 2011-2012 26 Complemento a la BASE-1 Dado un número positivo N en base b con parte entera de n dígitos y una parte decimal de m dígitos, se define el complemento a b-1 de cómo : Dr. Oscar Ruano - 2011-2012 27 Complemento a 1 Representaciones importates ya que nos permiten representar números negativos. La aritmética en complemento a 2 se usa en las computadores para manipular números negativos. Cálculo del complemento a 1 El complemento a 1 de un número binario se halla cambiando todos los 1s por 0s y todos los 0s por 1s 10110010 01001101 La forma más sencilla de obtener el complemento a 1 de una número binario mediante un circuito digital es utilizando inversores en paralelo (circuitos NOT) Dr. Oscar Ruano - 2011-2012 28 Complemento a la BASE Dado un número positivo N en base b con parte entera de N dígitos, se define el complemento a b de N como: Dr. Oscar Ruano - 2011-2012 29 Complemento a 2 El complemento a 2 de un número binario se obtiene sumando 1 al LSB del complemento a 1. nº binario: Complemento a 1 + 1 = Complemento a 2 10110010: 01001101 + 1 = 01001110 Método alternativo: 1. 2. Se empieza por la derecha con el LSB y se escriben los bits como están hasta encontrar el primer 1, incluido este. Se calcula el complemento a 1 de los bits restantes. Dr. Oscar Ruano - 2011-2012 30 Números con signo Formatos binarios para representar números enteros con signo: Signo-magnitud Complemento a 1 Complemento a 2 Bit de signo El bit mas a la izquierda de un número binario con signo es el bit de signo, que indica si el número es positivo o negativo. Un bit de signo 0 indica que es un número positivo Un bit de signo 1 indica que es un número negativo. Dr. Oscar Ruano - 2011-2012 31 Formatos SIGNO-MAGNITUD En el formato signo-magnitud, un número negativo tiene los mismo bits de magnitud que el correspondiente número positivo, pero el bit de signo es un 1 en lugar de un 0. 0 0011001 +25 || 1 0011001 -25 Signo Signo magnitud COMPLEMENTO A 1: magnitud Números positivos: misma forma que los números positivos en signo-magnitud Números negativos: son el complemento a 1 del correspondiente número positivo. Ejemplo: +25 (00011001) -25 (11100110) COMPLEMENTO A 2: Números positivos: misma forma que los números positivos en signo-magnitud y de complemento a 1. Número negativos: son el complemento a 2 del correspondiente número positivo Ejemplo: +25 (00011001) -25 (11100111) Dr. Oscar Ruano - 2011-2012 32 El valor decimal de los números con signo SIGNO-MAGNITUD. POSITIVOS && NEGATIVOS: sumar los pesos de todas las posiciones de los bits de magnitud cuando son 1. El signo se determina examinando el bit de signo 1 0010101 Magnitud = 16+4+1 = 21 Signo = 1 = COMPLEMENTO A 1 POSITIVOS: sumar los pesos de todas las posiciones de bit donde haya 1 NEGATIVOS: asignar el valor negativo al peso del bit de signo, y sumar todos los pesos donde haya 1s y sumar 1 al resultado 00010111 11101000 COMPLEMENTO A 2 POSITIVOS: sumar los pesos de todas las posiciones de bit donde haya 1 NEGATIVOS: el peso del bit de signo en un número negativo viene dado por su calor negativo 01010110 10101010 16+4+2+1 = +23 -128+64+32+8 = -24 + 1 = -23 64+16+4+2 = +86 -128+32+8+2 = -86 Es preferible usar el sistema de complemento a 2 para representar números con signo: se requiere una adición de pesos independientemente de que el número sea positivo o negativo Dr. Oscar Ruano - 2011-2012 33 Rango de representación de los números enteros con signo El rango de magnitud de un número binario depende del número de bits (n) 8 bits (byte) 256 números diferentes 16 bits 65536 números diferentes 32 bits Números con signo en signo-magnitud Nº total de combinaciones = 2n 4,295 x 109 Rango = - (2n-1 -1) hasta + (2n-1 -1) Números con signo en complemento a 2 Rango = - (2n-1) hasta + (2n-1 -1) Dr. Oscar Ruano - 2011-2012 34 Suma: Complemento a 2 SUMA: sumar los dos números y descartar cualquier bit de acarreo La suma de dos números positivos da una número positivo: 00000111 + 00000100 00001011 7 +4 11 La suma de un número positivo y un número negativo menor en valor absoluto da como resultado un número positivo 00001111 + 11111010 1 00001001 La suma de un número positivo y un número negativo mayor en valor absoluto o la suma de dos números negativos da como resultado un número negativo en complemento a 2: 00010000 +11101000 11111000 15 + -6 9 16 + -24 -8 11111011 + 11110111 1 11110010 Condición de desbordamiento (overflow): Dr. Oscar Ruano - 2011-2012 01111101 + 00111010 10110111 -5 + -9 -14 125 +58 183 35 Resta complemento a 2 RESTA: la resta es una suma con el signo del sustraendo cambiado El signo de un número binario positivo o negativo se cambia tomando su complemento a 2 Para restar dos números con signo, se calcula el complemento a 2 del sustraendo y se suman Cualquier bit de acarreo final se descarta 8 – 3 = 8 + (- 3) = 5 00001000 +11111101 1 00000101 00001000 - 00000011 Minuendo (+8) Complemento a 2 del sustraendo (- 3) Descartar acarreo Dr. Oscar Ruano - 2011-2012 36 Multiplicación complemento a 2 Suma directa: La multiplicación es equivalente a sumar un mismo número el número de veces que indique el multiplicador 01001101 multiplicando 00000100 multiplicador 01001101 +01001101 10011010 +01001101 11100111 +01001101 100110100 Productos parciales Mismo signo signo positivo Diferente signo, negativo Algoritmo del método Determinar el signo que tendrá el producto Poner cualquier número negativo en formato real no complementado. Generar los productos parciales Sumar los productos parciales Si el bit de signo que se había determinado en el paso 1 es negativo, calcular el complemento a 2. Si es positivo, dejar el producto en formato real. Añadir el bit de signo al producto. Dr. Oscar Ruano - 2011-2012 37 Ejemplos de Multiplicación Multiplicando: 0011 Multiplicador: 0011 Signo positivo Multiplicando: 0011 Multiplicador: 1101 Signo negativo 011 x011 011 011 1001 000 1001 Solución: 0 1001 011 x011 011 011 1001 000 1001 Solución: 1 0111 Dr. Oscar Ruano - 2011-2012 38 División complemento a 2 DIVISIÓN 1. 2. 3. Mismo signo signo positivo Diferente signo, negativo Ambos números (dividendo divisor) deben estar en formato real Determinar el signo que tendrá el cociente. Inicializar el cociente a 0 Restar el divisor del dividendo utilizando la suma en complemento a 2 para obtener el primer resto parcial, y SUMAR 1 AL COCIENTE. Si el resto parcial es positivo, ir al paso 3. Si el resto parcial es 0 o negativo, la división ha terminado. Restar el divisor del resto parcial y sumar 1 al cociente. Si el resultado es positivo, repetir para el siguiente resto parcial. Si el resultado es 0 o negativo, la división ha terminado. Dr. Oscar Ruano - 2011-2012 39 Ejemplos de División Dividendo: 010101 =21 Divisor: 111001 = -7 El signo del cociente será 1 (negativo) Formato real del divisor: 000111 010101 +111001 cociente 1 001110 000000 + 000001= 000001 +111001 1 000111 000001 + 000001 = 000010 +111001 1 000000 000010 + 000001 = 000011 Cociente= 111101 signo negativo Dr. Oscar Ruano - 2011-2012 40 Representación exceso a Z Un número binario representa su valor binario menos Z: 01010 en exceso 16 representa el número 10 – 16 = - 6 La representación binaria de un número en exceso Z, se obtiene sumando Z al número Representación de -6 en exceso 16 con 5 bits es 10: 01010 Representación de -8 en exceso 16 con 5 bits es 8: 01000 Representación de 8 en exceso 16 con 5 bits es 24: 10000 El rango de valores que se pueden representar con n bits en exceso 2n-1 es: [-2n-1, 2n-1 - 1] Dr. Oscar Ruano - 2011-2012 41 Números reales: la notación IEEE 754 Los computadores representan los números en notación científica normalizada: Todos los dígitos del número están a la derecha de la coma decimal y el primer dígito a la derecha de la coma decimal es diferente de cero 345,789 x 1012 = 0.345789 x 1015 Notación exponencial, científica o en coma flotante: cualquier número se puede representar de la forma: N = ± M · BE donde N es el número, M es la mantisa, B es la base y E es el exponente. Esta representación puede modificarse, conservando el valor de N, si se reajustan adecuadamente M y E. 13257,3285 = 13257,3285 · 100 = 1,32573285 · 104 = 0,132573285 · 105 = 132573285 · 10-4 Dr. Oscar Ruano - 2011-2012 42 Notación IEEE 754 PRECISIÓN SIMPLE La mantisa está representada como número binario con signo y el exponente en exceso 127 Un número arbitrario queda representado entonces de la forma: x = (-1)sm . (1,m22....m0) . 2(e7…e0)2 -127 Ejemplo: 1 10000001 01000000000000000000000 SM (signo mantisa) = 1 Exponente = (10000001)2 = (129)10; al estar en exceso 127 le restamos 127 para conocer el número que representa, igual a 2. Mantisa = 1, 01000000000000000000000 = 1 + 1 x 2-2 = 1,25 Resultado: -1,25 x 22 = -5 Dr. Oscar Ruano - 2011-2012 43 Código decimal binario BCD: 8421 El código decimal binario (BCD Binary Code Decimal) es utilizado para expresar los diferentes dígitos decimales con un código binario. Por consiguiente, el código BCD tiene diez grupos de código y resulta práctico para convertir entre decimal y BCD. El código 8421 pertenece al grupo de códigos BCD. El nombre 8421 indica los diferentes pesos de los cuatro bits binarios (23, 22, 21, 20). 649810 =(0110 0100 1001 1000)8421 Dr. Oscar Ruano - 2011-2012 44 Suma en BCD Sumar los dos números BCD utilizando las reglas de la suma binaria Si una suma de 4 bits es igual o menor que 9, es un número BCD válido Si la suma de 4 bits es mayor que 9, o si genera acarreo el resultado no es válido. En este caso se suma 6 (0110) al grupo de 4 bits para saltar así los seis estados no válidos. Si se genera un acarreo al sumar 6, éste se suma al grupo de 4 bits siguiente. 0010 0011 +0001 0101 0011 1000 1001 +0100 1101 no válido +0110 1 0011 Dr. Oscar Ruano - 2011-2012 1001 +1001 1 0010 no válido +0110 1 1000 45 Código Gray Un número y el siguiente se diferencian en un solo bit. El que suele cambiar es el menos significativo de los posibles. Dr. Oscar Ruano - 2011-2012 46 Código ASCII (Caracteres de control) Dr. Oscar Ruano - 2011-2012 47 Código ASCII (símbolos gráficos 20h – 3Fh) Dr. Oscar Ruano - 2011-2012 48 Código ASCII (símbolos gráficos 40h – 5Fh) Dr. Oscar Ruano - 2011-2012 49 Código ASCII (símbolos gráficos 60h – 7Fh) Dr. Oscar Ruano - 2011-2012 50 Método de paridad para detección de errores Un bit de paridad es un dígito binario que indica si el número de bits con valor 1 en un conjunto de bits, es par o impar. Hay dos tipos de bits de paridad: bit de paridad par y bit de paridad impar. El bit de paridad par se pone a 1 si el número de unos en un conjunto de bits es impar, haciendo de esta forma que el número total de bits (datos+paridad) sea par. El bit de paridad impar se pone a 1 si el número de unos en un conjunto de bits es par, haciendo de esta forma que el número total de bits (datos+paridad) sea impar. Dr. Oscar Ruano - 2011-2012 51 Código Hamming de corrección ENVÍO: CONSTRUCCIÓN DE CÓDIGO Número de bits de paridad: Colocación de los bits de paridad en el código: 2p ≥ d + p + 1 Bit1, bit2, bit3, bit4, bit5, bit6, bit7 ... Los bits de paridad se sitúan en las posiciones que son potencias de 2 en sentido ascendente EJEMPLO Tamaño palabra de datos: 4 bits (D1D2D3D4) Número bits paridad/redundancia: 3 (P1P2P3) Formato palabra codificada Cálculo valores bits de paridad: p1 => p1 D1 D2 D4 p2 => p2 D1 D3 D4 p3 => p3 D2 D3 D4 P1 P2 D1 P3 D2 D3 D4 Dr. Oscar Ruano - 2011-2012 52 Código Hamming de corrección RECEPCIÓN: COMPROBACIÓN Palabra codificada que llega Es necesario decodificar la palabra Las formulas para verificar los bits de paridad son: c1 c2 c3 c4 c5 c6 c7 se tienen que verificar bits paridad c1c2 y c4 0 comprobación correcta 1 comprobación no correcta e1 => c1 c3 c5 c7 e2 => c2 c3 c6 c7 e4 => c4 c5 c6 c7 Si (e1 = e2 = e3 = 0) entonces no hubo error en la transmisión sino error, el bit erróneo corresponde al equivalente decimal de (e3e2e1)2: 001: 1 010: 2 011: 3 100: 4 101: 5 110: 6 111: 7 Dr. Oscar Ruano - 2011-2012 53