EIE 446 - SISTEMAS DIGITALES Tema 2: Sistemas de Numeración, Operaciones y Códigos Nombre del curso: “Sistemas Digitales” Nombre del docente: Héctor Vargas Fecha: 1er semestre de 2011 INTRODUCCIÓN ● El sistema de numeración binario y los códigos digitales son fundamentales en las computadoras y, en general, en la electrónica digital. ● Esta unidad está enfocada principalmente al sistema de numeración binario y sus relaciones con otros sistemas de numeración tales como el decimal, hexadecimal y octal. ● Se cubren las operaciones aritméticas con números binarios con el fin de proporcionar una base para entender cómo trabajan las computadoras y muchos otros tipos de sistemas digitales. ● También se abordan códigos digitales como el código decimal binario (BCD, Binary Code Decimal), el código Gray y el ASCII. ● Se presenta el método de paridad para la detección de errores en los códigos y se describe un método para corregir dichos errores. NÚMEROS DECIMALES ● Todos estamos familiarizados con el sistema de numeración decimal porque los usamos cada día. ● Aunque los números decimales son triviales, a menudo, su estructura de pesos no se comprende. En lo sucesivo, revisaremos la estructura de los números decimales. ● Esto ayudará a entender más fácilmente la estructura del sistema de numeración binario, que es tan importante en las computadoras y la electrónica digital. NÚMEROS DECIMALES ● A la posición de cada número en un “sistema de numeración posicional” se le asigna un “peso” basado en la base o radix del sistema. El radix de los números decimales es 10, porque sólo se utilizan 10 símbolos (de 0 a 9) para representar cualquier número. ● Los pesos de las columnas de números decimales son potencias de 10 que se incrementan de derecha a izquierda empezando por 100 =1. …105 104 103 102 101 100. ● Para números decimales fraccionales, los pesos de las columnas son potencias negativas de 10 que disminuyen de izquierda a derecha. 102 101 100. 10-1 10-2 10-3 10-4 … NÚMEROS DECIMALES ● Los números decimales se pueden expresar como la “suma de productos” de cada dígito por los valores de las columnas (potencias de 10) para ese dígito. Así, el número 9240 se puede expresar como: (9 x 103) + (2 x 102) + (4 x 101) + (0 x 100) ó 9 x 1000 + 2 x 100 + 4 x 10 + 0 x 1 Expresar el número 480.52 como la suma de valores de cada dígito. 480.52 = (4 x 102) + (8 x 101) + (0 x 100) + (5 x 10-1) +(2 x 10-2) NÚMEROS BINARIOS ● El sistema de numeración binario es simplemente otra forma de representar magnitudes. ● El sistema binario es menos complicado que el decimal ya que solo tiene dos dígitos. Al principio puede parecer complicado por no ser familiar. ● El sistema decimal con sus diez dígitos es un sistema en base diez, el sistema binario con sus dos dígitos es un sistema en base dos. ● Los dos dígitos binarios (bits) son 1 y 0. La posición de un 1 o un 0 indican su peso o valor en un número de la misma manera que en el sistema decimal. NÚMEROS BINARIOS ● Para los sistemas digitales, se utiliza el sistema de numeración binario. El sistema binario tiene un radix de 2 y utiliza los dígitos 0 y 1 para representar cantidades. ● Los pesos de columna para números binarios son potencias de 2 que aumentan de derecha a izquierda empezando por 20 =1. …25 24 23 22 21 20. ● Para números binarios fraccionales, los pesos de las columnas son potencias negativas de 2 que disminuyen de izquierda a derecha. 22 21 20. 2-1 2-2 2-3 2-4 … NÚMEROS BINARIOS ● A la derecha se muestra una secuencia de conteo binario para los números decimales de 0 a 15. ● Observe los patrones de ceros y unos de cada columna. ● Los Contadores Digitales tienen comúnmente el mismo patrón de dígitos. Counter 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 Decoder Número Decimal Número Binario 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 CONVERSIÓN BINARIO A DECIMAL ● El equivalente decimal de un número binario se puede determinar sumando los valores de las columnas de todos los bits que son 1 y descartando todos los bits que son 0. Convertir el número binario 100101.01 a decimal. Comience por escribir la columna de pesos; luego sumar los pesos que corresponden a cada 1 en el número. 25 24 23 22 21 20. 2-1 2-2 32 16 8 4 2 1 . ½ ¼ 1 0 0 1 0 1. 0 1 32 +4 +1 +¼ = 37¼ CONVERSIÓN DECIMAL A BINARIO ● En la diapositiva anterior vimos cómo convertir un número binario en el número decimal equivalente. Ahora vamos a aprender dos métodos para convertir un número decimal en un número binario. 1. Método de la suma de pesos: Se puede convertir un número entero decimal en uno binario revirtiendo el procedimiento. Para ello: Escribir el peso decimal de cada columna y poner 1’s en las columnas que suman el número decimal. Convertir el número decimal 49 a binario. Poner 1s en las posiciones de pesos adecuadas de tal manera que la suma corresponda al número decimal. 26 25 24 23 22 21 20. 64 32 16 8 4 2 1. 0 1 1 0 0 0 1. CONVERSIÓN DECIMAL A BINARIO 2. Método de la división sucesiva por 2: Se puede convertir un decimal a cualquier base dividiendo repetidamente por la base. En el caso binario, dividir repetidamente por 2. La condición de parada se produce cuando la parte entera del cociente es 0. Convertir el número decimal 49 a binario dividiendo repetidamente por 2. Se puede hacer por “división en reversa” y la respuesta se leerá de izquierda a derecha. Poner cuocientes a la izquierda y restos encima. resto 1 1 0 0 0 1 0 1 3 6 12 24 49 2 Respuesta: Continúe hasta el último cuociente es 0 Cociente Número decimal base CONVERSIÓN DE FRACCIONES DECIMALES A BINARIO ● Se puede convertir un número decimal fraccionario a binario multiplicando repetidamente los resultados fraccionales de sucesivas multiplicaciones por 2. Los acarreos forman el número binario. Convertir el decimal fraccionario 0.188 a binario multiplicando los resultados fraccionales por 2. 0.188 x 2 = 0.376 0.376 x 2 = 0.752 0.752 x 2 = 1.504 0.504 x 2 = 1.008 0.008 x 2 = 0.016 acarreo = 0 acarreo = 0 acarreo = 1 acarreo = 1 acarreo = 0 MSB Respuesta = .00110 (para 5 dígitos significativos) ARITMÉTICA BINARIA ● La aritmética binaria es esencial en todas las computadoras digitales y en muchos otros tipos de sistemas digitales. ● Para entender los sistemas digitales, debe conocer los principios básicos de la suma, resta, multiplicación y división binarias. En lo sucesivo se introducen estos temas. SUMA BINARIA ● Las reglas básicas para la suma binaria son: 0+ 0+ 1+ 1+ 0= 1= 0= 1= 0 1 1 10 Suma = 0, Suma = 1, Suma = 1, Suma = 0, acarreo = acarreo = acarreo = acarreo = 0 0 0 1 ● Cuando hay un acarreo de entrada = 1 debido a un resultado previo, las reglas son: 1+ 1+ 1+ 1+ 0 + 0 = 01 0 + 1 = 10 1 + 0 = 10 1 + 1 = 11 Suma = 1, acarreo = 0 Suma = 0, acarreo = 1 Suma = 0, acarreo = 1 Suma = 1, acarreo = 1 SUMA BINARIA Sumar los números binarios 00111 y 10101 y mostrar la suma decimal equivalente. 0111 00111 7 10101 21 11100 = 28 RESTA BINARIA ● Las reglas básicas para la resta binaria son: 0-0=0 1-1=0 1-0=1 10 - 1 = 1 con un adeudo de 1 Restar el número binario 00111 a 10101 y mostrar la resta decimal equivalente. 1 11 / / / 10101 21 00111 7 01110 = 14 MULTIPLICACIÓN BINARIA ● Las reglas básicas para la multiplicación binaria son: 00=0 01=0 10=0 11=1 ● La multiplicación con números binarios se realiza de la misma forma que con números decimales. Se realizan los productos parciales, desplazando cada producto parcial sucesivo una posición a la izquierda, y sumando luego todos los productos parciales. Multiplicar el número binario 110100010101 con 1101. MULTIPLICACIÓN BINARIA Multiplicar el número binario 110100010101 con 1101. 334913 = 43537 DIVISIÓN BINARIA ● Estudiar del libro base … COMPLEMENTO A 1 Y 2 DE NÚMEROS BINARIOS ● El complemento a 1 y el complemento a 2 de un número binario son importantes porque permiten la representación de números negativos. ● La aritmética en complemento a 2 se usa comúnmente en las computadoras para manipular números negativos. COMPLEMENTO A 1 ● El complemento a 1 de un número binario es solo la inversión de los dígitos. Para formar el complemento a 1, cambiar todos los 0’s a 1’s y todos los 1’s a 0’s. Por ejemplo, el complemento a 1 de 11001010 es 00110101 ● En circuitos digitales, el complemento a 1 se forma utilizando inversores: 1 1 0 0 1 0 1 0 0 0 1 1 0 1 0 1 COMPLEMENTO A 2 ● El complemento a 2 de un número binario se obtiene sumando 1 al LSB del complemento a 1. Recordamos que el complemento a 1 de 11001010 es 00110101 (complemento a 1) Para formar el complemento a 2, sumar 1: +1 00110110 (complemento a 2) 1 1 0 0 1 0 1 0 1 0 0 1 1 0 1 0 1 Input bits Carry in Adder Output bits (sum) 0 0 1 1 0 1 1 0 (add 1) COMPLEMENTO A 2 ● Un método alternativo para obtener el complemento a 2 de un número binario es el siguiente: 1. Se empieza por la derecha con el LSB y se escriben los bits como están hasta encontrar el primer 1, incluido éste. 2. Se calcula el complemento a 1 de los bits restantes. Calcular el complemento a 2 de 10111000. NÚMEROS CON SIGNO ● Los sistemas digitales, tales como las computadoras, deben ser capaces de manejar números positivos y negativos. ● Un número binario con signo queda determinado por su magnitud y su signo. El signo indica si un número es positivo o negativo, y la magnitud el valor del número. ● Existen tres formatos binarios para representar los números enteros con signo: signo-magnitud, complemento a 1 y complemento a 2. ● Los números no enteros y muy grandes o muy pequeños pueden expresarse en formato de coma flotante. BIT DE SIGNO ● El bit más 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 se signo 0 indica que es un número positivo y un bit de signo igual a 1 indica que es un número negativo”. FORMATO SIGNO Y MAGNITUD ● Cuando un número binario con signo se representa en este formato, el bit más a la izquierda es el bit de signo y los restantes bits son de magnitud. Por ejemplo, el número decimal positivo +25 se escribe usando 8-bits como 00011001 (forma real). bit de Signo bits de Magnitud El -25 se expresa como 10011001 (forma real). bit de Signo bits de Magnitud FORMATO DEL COMPLEMENTO A 1 ● Los números positivos en formato de complemento a 1 se representan igual que los números positivos del formato signo-magnitud. Sin embargo, los números negativos son el complemento a 1 del correspondiente número positivo. Por ejemplo, con ocho bits, el número decimal -25 se expresa como el complemento a 1 de +25 (00011001) como 11100110. “En formato complemento a 1, un número negativo es el complemento a 1 del correspondiente número positivo” FORMATO DEL COMPLEMENTO A 2 ● Los números positivos en formato de complemento a 2 se representan igual que los números positivos del formato signo-magnitud y complemento a 1. Sin embargo, los números negativos son el complemento a 2 del correspondiente número positivo. Por ejemplo, con ocho bits, el número decimal -25 se expresa como el complemento a 2 de +25 (00011001) como 11100111. “En formato complemento a 2, un número negativo es el complemento a 2 del correspondiente número positivo” VALOR DECIMAL DE LOS NÚMEROS CON SIGNO ● Signo y magnitud. Los valores decimales de los números positivos y negativos en el formato signo-magnitud se determinan sumando los pesos de todas las posiciones de los bits de magnitud que tienen 1 e ignorando las posiciones donde haya ceros. El signo se determina examinando el bit de signo. Determinar el valor decimal del número binario con signo expresado como signo-magnitud 10010101: Pesos de columnas: 64 32 16 8 4 2 1. 0 0 1 0 1 0 1 16 + 4 + 1 = -21 VALOR DECIMAL DE LOS NÚMEROS CON SIGNO ● Complemento a 1. Los valores decimales de los números positivos se determinan sumando los pesos de todas las posiciones de los bits de magnitud que tienen 1 e ignorando las posiciones donde haya ceros. Los números negativos se determinan asignando el valor negativo al peso del bit de signo, y sumando todos los pesos donde haya 1s y sumando 1 al resultado. Determinar los valores decimales de los números binarios con signo expresados en complemento a 1: a) 00010111 b) 11101000 VALOR DECIMAL DE LOS NÚMEROS CON SIGNO ● Complemento a 2. Los valores decimales de los números positivos se determinan sumando los pesos de todas las posiciones de los bits de magnitud que tienen 1 e ignorando las posiciones donde haya ceros. El peso del bit de signo en un número negativo viene dado por su valor negativo. Determinar los valores decimales de los números binarios con signo expresados en complemento a 2: a) 01010110 b) 10101010 RANGO DE REPRESENTACIÓN DE LOS NÚMEROS CON SIGNO ● En la mayoría de los ejemplos se han utilizado números de 8 bits, puesto que la agrupación de 8 bits es un estándar en la mayoría de los sistemas digitales y recibe el nombre de byte. ● Con 8 bits se pueden representar 256 números diferentes. ● Combinando 2 bytes (16 bits) se pueden representar 65.536 números diferentes. ● Combinando 4 bytes (32 bits) se pueden representar 4.295x109 números diferentes. ● Y así sucesivamente ……. RANGO DE REPRESENTACIÓN DE LOS NÚMEROS CON SIGNO ● La fórmula para calcular el número de combinaciones diferentes es: Número total de combinaciones = 2n ● Para los números con signo en complemento a 2, el rango de valores para números de n bits es: -(2n-1) a +(2n-1-1) ● Habiendo en cada caso un bit de signo y n-1 bits de magnitud. Por ejemplo, con cuatro bits pueden representarse números en complemento a 2 en el rango de –(23) = -8 hasta +(23 - 1) = +7. Igualmente, con ocho bits, se pueden abarcar desde -128 hasta +127; con 16 bits se puede ir desde 32.768 a 32.767, y así sucesivamente … NÚMEROS EN COMA FLOTANTE ● Para representar números enteros muy grandes, son necesarios muchos bits. También se producen problemas cuando queremos representar números con parte fraccionaria, tal como 23,5618. ● El número en coma flotante (también conocido como número real) tiene dos partes más un signo. La mantisa que representa la magnitud del número. El exponente que representa el número de lugares que se va a desplazar el punto decimal (o binario). ● Por ejemplo el número decimal 241.506.800 puede ser reescrito en formato de coma flotante tomando 0,2415068 como mantisa y 9 como exponente. Queda finalmente: 0,2415068 x 109 NÚMEROS EN COMA FLOTANTE ● Para los números en coma flotante binarios, el formato definido por el estándar 754/1985 ANSI/IEEE puede tomar tres formas: simple precisión (compuesto por 32 bits), doble precisión (compuesto por 64 bits) y precisión ampliada (80 bits). ● Restringiremos la explicación al formato en coma flotante de precisión simple el cual se ilustra a continuación. S E (8 bits) Bit de signo Exponente desplazado (E) (+127) F (23 bits) Mantisa (parte fraccionaria, F) NÚMEROS EN COMA FLOTANTE ● Un ejemplo para ilustrar como un número binario se expresa en formato de coma flotante: 1011010010001. NÚMEROS EN COMA FLOTANTE Expresar la velocidad de la luz, c, en notación de punto flotante de precisión simple binario. (c = 0.2998 x 109) En binario, c = 0001 0001 1101 1110 1001 0101 1100 0000 2. En notación científica, c = 1.0001 1101 1110 1001 0101 1100 0000 x 228. S = 0 porque el número es positivo. E = 28 + 127 = 15510 = 1001 10112. F son los siguientes 23 bits descartando el primer 1. En notación de punto flotante, c = 0 10011011 0001 1101 1110 1001 0101 110 NÚMEROS EN COMA FLOTANTE ● Para evaluar un número binario que ya está en formato de coma flotante se utiliza la siguiente fórmula. Número = (-1)S(1 + F)(2E-127) ● Por ejemplo, consideremos el siguiente número binario en coma flotante. 1 10010001 1000 1110 0010 0000 0000 000 ● El bit de signo es 1. El exponente desplazado es 10010001 = 145. Aplicando la fórmula, obtenemos Número = (-1)1(1.10001110001)(2145-127) = (-1)(1.10001110001)(218) = -1100011100010000000 Este número es equivalente al -407.688 en decimal. OPERACIONES ARITMÉTICAS DE NÚMEROS CON SIGNO ● Hemos aprendido como se representan, en tres formatos diferentes, los números con signo. Ahora, estudiaremos como se suman, restan, multiplican y dividen estos números. ● Dado que el complemento a 2 es el sistema de representación de números con signo más ampliamente utilizado en las computadoras y microprocesadores, en lo sucesivo veremos la aritmética de números con signo en complemento a 2. ● Los procedimientos que veremos pueden perfectamente extenderse a los demás sistemas. SUMA ● Los dos números en una suma se denominan sumandos. El resultado es la suma. Cuando se suman dos números binarios con signo pueden producirse cuatro casos: 1. Ambos números son positivos. 2. El número positivo es mayor que el negativo en valor absoluto. 3. El número negativo es mayor que el positivo en valor absoluto. 4. Ambos números son negativos. ● Ahora veremos caso por caso, utilizando números de 8 bits como ejemplo. Se pondrán como referencia los números decimales equivalentes. SUMA ● Caso 1: Ambos números son positivos. 01 0 0 + 00000111 7 00000100 4 000 010 11 = 11 La suma es positiva y, por tanto, es un número binario real (no complementado). ● Caso 2: El número positivo es mayor que el número negativo en valor absoluto. 11111 1 0 Descartar acarreo 00001111 15 + 11111010 + -6 1 000010 01 = 9 El bit de acarreo final no se tiene en cuenta. La suma es positiva y, por tanto, es un número binario real (no complementado). SUMA ● Caso 3: El número negativo es mayor que el número positivo en valor absoluto. 0000 00 0 + 00010000 16 11101000 + -24 111110 00 = -8 La suma es negativa y, por tanto, está en complemento a 2. ● Caso 4: Ambos números son negativos. 11111 1 1 Descartar acarreo 11111011 -5 + 11110111 + -9 1 111100 10 = -14 El bit de acarreo final no se tiene en cuenta. La suma es negativa y, por tanto, está en complemento a 2. ● En una computadora, los números negativos se almacenan en formato complemento a 2, por lo que, como se pudo apreciar, el procedimiento de suma es muy sencillo: “sumar los dos números y descartar cualquier bit de acarreo final” CONDICIÓN DE DESBORDAMIENTO (OVERFLOW) ● Cuando se suman dos números y el número de bits requeridos para representar la suma excede el número de bits de los dos números, se produce un desbordamiento, que se indica mediante un bit de signo incorrecto. ● NOTA: Un desbordamiento se produce sólo cuando ambos números son positivos o negativos. 11110 0 0 + Signo y magnitud incorrecta 01111101 +125 00111010 + 58 101101 11 = 183 Ejemplo de desbordamiento con números de 8 bits. ● En el ejemplo anterior, la suma 183 requiere 8 bits de magnitud. Puesto que los números tienen sólo 7 bits de magnitud, se produce un acarreo en el bit de signo que da lugar a la indicación de desbordamiento. RESTA ● La resta es un caso especial de la suma. Por ejemplo: restar +6 (el sustraendo) de +9 (el minuendo) es equivalente a sumar -6 a +9. ● Básicamente, la operación de resta consiste en cambiar el signo del sustraendo y sumarlo al minuendo. El resultado de una resta se denomina diferencia. ● El signo de un número binario positivo o negativo se cambia tomando su complemento a 2. ● Puesto que la sustracción o resta es simplemente una suma con el signo del sustraendo cambiado, el proceso se define del siguiente modo: “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”. RESTA MULTIPLICACIÓN ● Los números en una multiplicación se denominan multiplicando, multiplicador y producto. La siguiente multiplicación decimal ilustra estos términos. ● Comúnmente, la operación de multiplicación se realiza utilizando la suma. (Recordar que la resta igual se hace como una suma). ● Existen dos métodos para realizar la multiplicación de números con signo. Ellos son: 1. El método de la suma directa. 2. El método de los productos parciales. MULTIPLICACIÓN ● Método 1. En el método de la suma directa, se suma el multiplicando un número de veces igual al multiplicador. Método no eficiente ya que si el multiplicador es muy grande, la suma será muy larga. ● Método 2. El método de los productos parciales es el más común ya que es la forma de multiplicar manualmente. El signo del producto de una multiplicación depende de los signos del multiplicando y del multiplicador, de acuerdo con las dos reglas siguientes: Si son del mismo signo, el producto es positivo. Si son de diferente signo, el producto es negativo. MULTIPLICACIÓN ● El procedimiento del método se resume a continuación: 1. Paso 1. Determinar si los signos del multiplicando y el multiplicador son diferentes. Así determinamos el signo del producto. 2. Paso 2. Poner cualquier número negativo en formato real (no complementado). Puesto que la mayoría de las computadoras almacenan los números negativos en complemento a 2, se requiere esta operación para obtener el número negativo en formato real. 3. Paso 3. Empezar por el bit del multiplicador menos significativo y generar los productos parciales. Cada producto parcial debe desplazarse un bit a la izquierda. 4. Paso 4. Sumar cada producto parcial a la suma de los productos parciales anteriores para obtener el producto final. 5. Paso 5. Si el bit de signo que se había determinado en el paso 1 es negativo, calcular el complemento a 2 del producto. Si es positivo, dejarlo en formato real. Añadir el bit de signo al producto. MULTIPLICACIÓN ● Multiplicar los siguientes números con signo: 1. 01010011 (multiplicando) – 11000101 (multiplicador). 2. Verificar que la multiplicación es correcta convirtiendo los binarios a decimales y realizando la multiplicación. MULTIPLICACIÓN MULTIPLICACIÓN DIVISIÓN ● Los números en una división se denominan dividendo, divisor y cociente. ● En los computadores, la operación de división se lleva a cabo usando la resta. Puesto que la resta se puede realizar como una suma, la división también se puede llevar a cabo con un sumador. ● El signo del cociente depende de los signos del dividendo y del divisor, de acuerdo con las dos reglas siguientes: 1. Si son del mismo signo, el cociente es positivo. 2. Si son de diferente signo, el cociente es negativo. DIVISIÓN ● El procedimiento para dividir dos números se resume a continuación: 1. Paso 1. Determinar si los signos del dividendo y el divisor son diferentes. Esto determina que signo tendrá el cociente. Inicializar el cociente a cero. 2. Paso 2. Restar el divisor del dividendo utilizando la suma en complemento a 2, para obtener el primer resto parcial, y sumar 1 al cociente. Si este resto parcial es positivo, ir al paso 3. Si el resto parcial es cero o negativo, la división se ha terminado. 3. Paso 3. Restar el divisor del resto parcial y sumar 1 al cociente. Si el resultado es positivo, repetir el siguiente resto parcial. Si el resultado es cero o negativo, la división se ha terminado. Continuar restando el divisor del dividendo y los restos parciales hasta que el resultado sea cero o negativo. Contar el número de veces que se ha restado el divisor y se obtendrá el cociente. DIVISIÓN ● Dividir los siguientes números con signo: 1. 01100100 (dividendo) – 00011001 (divisor). 2. Verificar que la división es correcta convirtiendo los binarios a decimales y realizando la división. DIVISIÓN DIVISIÓN NÚMEROS HEXADECIMALES ● El sistema de numeración hexadecimal consta de dieciséis dígitos y se usan fundamentalmente como una forma simplificada de representar o escribir los números binarios, ya que es muy fácil la conversión entre binario y hexadecimal. ● Los números binarios largos son difíciles de leer y escribir, ya que es fácil omitir o trasponer un bit. La representación hexadecimal ayuda a solventar esta limitante al reducir la cantidad de símbolos en la notación. ● El sistema hexadecimal se usa frecuentemente en computadoras y aplicaciones de microprocesadores. NÚMEROS HEXADECIMALES ● La representación Hexadecimal usa dieciséis caracteres para representar números: los números del 0 al 9 y los caracteres alfabéticos de la A a la F. ● Para contar en hexadecimal por sobre la F, sencillamente se inicia otra columna y se continúa de la siguiente manera. 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F, 20, 21, 22, …. Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Hexadecimal Binario 0 1 2 3 4 5 6 7 8 9 A B C D E F 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 CONVERSIÓN BINARIO - HEXADECIMAL ● La conversión de un número binario en hexadecimal es un procedimiento muy sencillo. Simplemente, se parte el número binario en grupos de 4 bits, comenzando por el bit más a la derecha, y se reemplaza cada grupo de 4 bits por su símbolo hexadecimal equivalente, como ilustra abajo. 0011 1111 0001 0110 10012 1100 1010 0101 01112 C A 5 7 = CA5716 3 F 1 6 9 = 3F16916 CONVERSIÓN HEXADECIMAL - BINARIO ● Para convertir un número hexadecimal en un número binario se realiza el proceso inverso, reemplazando cada símbolo hexadecimal por el grupo de cuatro bits adecuado. 1 0 A 4 1 0000 0101 01002 CONVERSIÓN HEXADECIMAL - DECIMAL ● Un método para encontrar el equivalente decimal de un número hexadecimal es, primero, convertir el hexadecimal a binario y luego el binario a decimal. Abajo se ilustra un ejemplo. 1 C 0001 11002 = 24 + 23 + 22 = 16 + 8 + 4 = 2810 ● Otro método para convertir un número hexadecimal a su equivalente decimal es multiplicar el valor decimal de cada dígito hexadecimal por su peso, y finalmente, realizar la suma de estos productos. B2F816 = (Bx4096) + (2x256) + (Fx16) + (8x1) = (11x4096) + (2x256) + (15x16) + (8x1) = 45056 + 512 + 240 + 8 = 4581610 CONVERSIÓN DECIMAL - HEXADECIMAL ● Al igual que la conversión de decimal a binario, el método de la división sucesiva por 2 se puede extender a cualquier base. En este caso, la división sucesiva por 16 de un número decimal generará el número hexadecimal equivalente formado por los restos de las divisiones. A continuación vemos como convertir el decimal 650 en hexadecimal. 650/16 40/16 2/16 = 40,625 = 2,5 = 0,125 0,625 x 16 = 10 0,5 x 16 = 8 0,125 x 16 = 2 =A =8 =2 LSB Resultado final = 2 8 A SUMA HEXADECIMAL ● Cuando se suman dos números hexadecimales se usan las siguientes reglas: 1. En cualquier columna dada de una suma, pensar en los dos dígitos hexadecimales en términos de su valor decimal. Por ejemplo, 516 = 510, C16 = 1210. 2. Si la suma de los dos dígitos es 1510 o menor, reducir al dígito hexadecimal correspondiente. 3. Si la suma de los dígitos es mayor que 1510, hay que reducir la suma que excede de 1610 y pasar el acarreo de 1 a la siguiente columna. SUMA HEXADECIMAL RESTA HEXADECIMAL USANDO COMPLEMENTO A 2 ● Como ya se sabe, el complemento a 2 permite restar sumando números binarios. Este método también aplica a la resta en hexadecimal. NÚMEROS OCTALES ● Octal usa ocho caracteres, los números del 0 al 7 para representar los números. No existe el caracter 8 o 9 en octal. ● Los números binarios se pueden convertir fácilmente a octal al agrupar bits de a 3 y escribiendo el carácter octal equivalente para cada grupo. Expresar 1 001 011 000 001 1102 en octal: Agrupar los números binarios de a 3bits comenzando desde la derecha. De esta manera, 1130168 Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Octal Binario 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 NÚMEROS OCTALES Decimal ● Octal también es un sistema de numeración ponderado. Los pesos de las columnas son potencias de 8, las cuales se incrementan de derecha a izquierda. { Pesos de columna 83 82 81 80 512 64 8 1 . . Expresar 37028 en decimal. Comenzar por escribir los pesos de las columnas: 512 64 8 1 3 7 0 28 3(512) + 7(64) +0(8) +2(1) = 198610 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Octal Binario 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 CÓDIGO DECIMAL BINARIO (BCD) ● El código decimal binario (BCD) es un código ponderado que se utiliza comúnmente en sistemas digitales cuando se necesita mostrar números decimales tal como un display de reloj. ● La tabla ilustra la diferencia entre binario directo y BCD. BCD representa cada dígito decimal con un código de 4-bit. Observe que los códigos desde el 1010 al 1111 no se utilizan en BCD, es decir, son códigos no válidos. Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Binario BCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 0001 0000 0001 0001 0001 0010 0001 0011 0001 0100 0001 0101 CÓDIGO DECIMAL BINARIO (BCD) ● Aquí se muestra un experimento de laboratorio en el cual el código BCD se convierte a decimal. CÓDIGO DECIMAL BINARIO (BCD) ● Se puede pensar en BCD en términos de los pesos de las columnas en grupos de a cuatro bits. Para un número BCD de 8-bit, los pesos de las columnas son: 80 40 20 10 8 4 2 1. ¿Cuáles son los pesos de las columnas para el número BCD 1000 0011 0101 1001? 8000 4000 2000 1000 800 400 200 100 80 40 20 10 8 4 2 1 Observe que se podría agregar los pesos de las columnas donde hay un 1 para obtener el número decimal equivalente. Para este caso: 8000 + 200 +100 + 40 + 10 + 8 +1 = 835910 CONVERSIÓN DECIMAL a BCD ● Para expresar cualquier número decimal en BCD, simplemente reemplazar cada dígito decimal por el apropiado código de 4 bits. CONVERSIÓN BCD a DECIMAL ● Para expresar cualquier número BCD en decimal, simplemente se comienza por el bit más a la derecha y se divide el código en grupos de a cuatro. Luego, se escribe el dígito decimal representado por cada grupo. SUMA EN BCD ● BCD es un código numérico y puede utilizarse en operaciones aritméticas. ● Veremos sólo la suma en BCD ya que las otras tres operaciones pueden llevarse a cabo utilizando la suma. Los pasos son los siguientes: 1. Paso 1. Sumar los dos números BCD utilizando las reglas de la suma binaria vistas en las clases anteriores. 2. Paso 2. Si una suma de 4 bits es igual o menor que 9, es un número BCD válido. 3. Paso 3. Si una suma de 4 bits es mayor que 9, o si genera un acarreo en el grupo de 4 bits, 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 y pasar al código BCD. Si se genera un acarreo al sumar 6, este se suma al grupo de 4 bits siguientes. SUMA EN BCD ● Ejemplo sin acarreos… SUMA EN BCD ● Ejemplos con acarreos … CÓDIGO GRAY ● El código Gray es un código sin ponderación que cambia sólo un bit entre una palabra de código y la siguiente en una secuencia. ● El código Gray se utiliza para evitar problemas en sistemas donde un error puede ocurrir si más de un bit cambia en una transición en secuencia. Decimal Binario Cod. Gray 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000 CÓDIGO GRAY ● Un mecanismo codificador de eje es una aplicación típica. Tres detectores/emisores de infrarrojo IR se utilizan para codificar la posición del mecanismo. El codificador de la izquierda usa codificación binaria y puede tener 3-bits que cambian a la vez, lo cual genera una potencial fuente error. El codificador de la derecha usa código gray y solamente cambia 1-bit en cada transición, eliminando los errores del sistema. Secuencia binaria Secuencia cód. Gray CÓDIGO ASCII ● ASCII es un código de caracteres alfanuméricos y caracteres de control. ● En su forma original, ASCII codifica 128 caracteres y símbolos usando 7 bits. Los primeros 32 caracteres son caracteres de control, que fueron originalmente requeridos para sistemas teletipo. Hoy en día, estos caracteres están generalmente asignados a otras funciones más modernas. ● En 1981, IBM introdujo el código ASCII extendido, el cual es un código de 8-bit y se aumento entonces el conjunto de caracteres a 256. Otros conjuntos de caracteres extendidos (tal como Unicode) se han introducido para manejar caracteres que entiendan lenguajes distintos al Inglés. CÓDIGO ASCII DETECCIÓN DE ERRORES Y CÓDIGOS DE CORRECCIÓN ● Se abordarán dos métodos para sumar bits a códigos para detectar o para detectar y corregir un error en un único bit. 1. El primero de ellos es el método de paridad para la detección de errores. 2. El segundo es el método de Hamming para detección y corrección de un único error. MÉTODO DE PARIDAD PARA LA DETECCIÓN DE ERRORES ● El método de paridad es un método de detección de error para sistemas de transmisión simples que involucran errores de un bit (o un número impar de bits). ● Un bit de paridad es un bit “extra” que se adjunta o añade a un grupo de bits para forzar el número de 1’s a ser par (paridad par) o impar (paridad impar). ● Un determinado sistema puede funcionar con paridad par o impar, pero no con ambas. Por ejemplo, si un sistema trabaja con paridad par, una comprobación que se realice en cada grupo de bits recibidos tiene que asegurar que el número total de 1s en es grupo es par. Si hay un número impar de 1s, quiere decir que se ha producido un error. MÉTODO DE PARIDAD PARA LA DETECCIÓN DE ERRORES ● Detección del un error. Un bit de paridad facilita la detección de un único error de bit (o de cualquier número impar de errores, lo cual es muy improbable), pero no puede detectar dos errores dentro de un grupo. ● Ejemplo. Si queremos transmitir el código BCD 0101. El código total transmitido incluyendo el bit de paridad par es: Bit de paridad par 0 0101 Código BCD ● Si se produce un error en el tercer bit de la izquierda (el 1 se transmite como 0). Bit de paridad par 0 0001 Bit erróneo Cuando se recibe este código, la circuitería de comprobación de paridad determina que sólo hay un 1 (impar), cuando debería haber un número par de 1s. Puesto que en el código recibido no aparece un número par de 1s, esto indica que se ha producido un error. MÉTODO DE PARIDAD PARA LA DETECCIÓN DE ERRORES EL CÓDIGO DE HAMMING DE CORRECCIÓN DE ERRORES ● El código Hamming sirve no solo para detectar un error si no también proporciona un método de corrección de un único bit erróneo. ● Un código Hamming para detección de errores en un grupo de datos se construye llevando a cabo tres procesos en secuencia: 1. Número de bits de paridad. 2. Colocación de bits de paridad en el código. 3. Asignación de los valores de los bits de paridad. EL CÓDIGO DE HAMMING DE CORRECCIÓN DE ERRORES ● Número de bits de paridad. Si el número de bits de datos se designa por d, entonces el número de bits de paridad, p, se determina mediante la p siguiente expresión: 2 d p 1 ● Colocación de los bits de paridad en el código. Los bits de paridad se sitúan en las posiciones que se han numerado haciéndolas corresponder con las potencias de dos en sentido ascendente(1,2,4,8,…) como sigue: P1 , P2 , D1 , P3 , D2 , D3 , D4 ● Asignación de los valores de los bits de paridad. Para terminar, hay que asignar apropiadamente un valor de 1 o de 0 a cada uno de los bits de paridad. Para ello se debe confeccionar la tabla siguiente: EL CÓDIGO DE HAMMING DE CORRECCIÓN DE ERRORES COMO DETECTAR Y CORREGIR UN ERROR CON HAMMING ● Paso 1. Comenzar con el grupo comprobado por P1. ● Paso 2. Comprobar si el grupo tiene paridad correcta. Un 0 representa que la comprobación de paridad es correcta y un 1 que es incorrecta. ● Paso 3. Repita el paso 2 para cada grupo de paridad. ● Paso 4. El número binario formado por los resultados de todas las comprobaciones de paridad indica la posición del bit del código que es erróneo. Es el código de posición de error. La primera comprobación de paridad genera el bit menos significativo (LSB). Si todas las comprobaciones son correctas, no habrá error. COMO DETECTAR Y CORREGIR UN ERROR CON HAMMING COMO DETECTAR Y CORREGIR UN ERROR CON HAMMING PALABRAS CLAVES DE LA UNIDAD Byte Número en punto flotante Hexadecimal Octal BCD Un grupo de ocho bits Una representación de números basada en notación científica en la que el número se compone de un exponente y una mantisa. Un sistema numérico en base 16. Un sistema numérico en base 8. Decimal codificado en binario; un código digital en el que cada uno de los dígitos decimales, del 0 al 9, se representa por un grupo de cuatro bits. PALABRAS CLAVES DE LA UNIDAD Alfanumérico Consistente en números, letras u otros caracteres. ASCII Código estándar americano para el intercambio de información; es el código alfanumérico más ampliamente utilizado. Paridad En relación a los códigos binarios, la condición de paridad par o impar está en el número de 1s en un grupo de código. Comprobación de la Un tipo de código de detección de errores. redundancia cíclica (CRC) CONCLUSIONES DE LA UNIDAD ● Vimos los distintos tipos de representación numérica, especialmente los sistema de numeración posicional caracterizado por los pesos de los dígitos según la posición que adoptan en el número. ● Vimos como convertir números representados en un sistema de numeración a otro. Especialmente, vimos los sistemas decimal, binario, hexadecimal y octal. ● Vimos la aritmética asociada a cada uno de estos sistemas de representación con números en formato real y formato con signo. ● Vimos la estructura de los códigos binarios más utilizados en sistemas digitales. Estos son: código BCD (8421), GRAY y ASCII. ● Vimos un método para comprobar o detectar posibles errores de transmisión en números binarios y la manera de corregirlos. BIBLIOGRAFÍA Libro base: “Fundamentos de Sistemas Digitales”. Autor: Tomas L. Floyd. Libro complemento: “Principios de Diseño Digital”. Autor: Daniel D. Gaski.