5.2. Sistemas de codificación en binario 5.2.1. Sistemas numéricos posicionales [ Wakerly 2.1 pág. 26] 5.2.2. Números octales y hexadecimales [ Wakerly 2.2 pág. 27] 5.2.3. Conversión general de sistemas numérico posicionales [ Wakerly 2.3 pág. 29] 5.2.4. Suma y resta de números no decimales [ Wakerly 2.4 pág. 32] 5.2.5. Representación de números negativos (signo-magnitud, complemento a 1, complemento a 2) [ Wakerly 2.5 pág. 34] 5.2.6. Suma y resta en complemento a 2 [ Wakerly 2.6 pág. 39] 5.2.7. Código binarios para números decimales [ Wakerly 2.10 pág. 48] 5.2.8. Código Gray [ Wakerly 2.11 pág. 51] 5.2.9. Códigos detectores y correctores de errores[ Wakerly 2.15 pág. 58] 1 Objetivos Revisión de sistema numérico decimal Contar en el sistema binario Convertir de decimal a binario y viceversa Conversión entre los sistemas hexadecimal y octal a binario Aplicar las operaciones aritméticas a los números binarios Determinar el complemento a 1 y complemento a 2 de un número binario Expresar números con signo en el formato binario Expresar números decimales en formato BCD (Código Decimal Binario) Interpretar el código ASCII Utilizar códigos para detección y corrección de errores 2 1
5.2.1. Sistemas numéricos posicionales El sistema de numeración que utilizamos a diario es un sistema de numeración posicional en el cual un número se representa mediante una cadena de dígitos en la cual posición de cada dígito tiene asociado un peso. En general, cualquier número decimal de la forma: tiene el valor: d p 1d p 2... d1d0. d 1d 2... d D = d... d 10 p i p 2 1 0 1 2 p 110 + d p 210 +... + d110 + d010. d 110 + d 210 + radix n Dígito Menos Significativo (LSD) Coma fraccionaria Dígito Más Significativo (MSD) n n 3 5.2.1. Sistemas numéricos posicionales El sistema de numeración que utilizamos a diario es un sistema de numeración posicional en el cual un número se representa mediante una cadena de dígitos en la cual posición de cada dígito tiene asociado un peso. En general, cualquier número decimal de la forma: d p 1d p 2... d1d0. d 1d 2... d n Dígito Menos Significativo (LSD) Coma fraccionaria Dígito Más Significativo (MSD) tiene el valor: D = p 1 i= n d i r i 4 2
5.2.1. Sistemas numéricos posicionales Los sistemas digitales usan dígitos binarios, y por lo tanto se usa una base binaria para representar cualquier número en un sistema digital. La forma general de un número binario es: Y su valor equivalente b p 1b p 2... b1b 0. b 1b 2... b n B = p 1 b i i= n 2 i 5 5.2.2. Números octales y hexadecimales La base (o radix) 8 y especialmente la 16 se usan a menudo para hacer las representaciones de números binarios más cortas, reduciendo la necesidad de cadenas largas indescifrables. dígitos del 0 al 7 dígitos del 0 al 9 dígitos del 0 al 9 + ABCDEF 6 3
5.2.2. Números octales y hexadecimales Conversión de binario a octal: comenzando en la coma binaria, y hacia la izquierda, separar los bits en grupos de 3 y reemplazar por el correspondiente dígito octal. Conversión de binario a hexadecimal: comenzando en la coma binaria, y hacia la izquierda, separar los bits en grupos de 4 y reemplazar por el correspondiente dígito hexadecimal. Conversión de la parte fraccionaria: comenzando en la coma binaria, separar los bits en grupos de 3 o 4 hacia la izquierda y derecha y reemplazar. Conversión a números binarios: Reemplazar cada octal o dígito hexadecimal con la correspondiente cadena binaria de 3 o 4 bits. 7 5.2.3. Conversión general de sistemas numéricos Como regla general, no se puede pasar de la representación de un número en una base a otra sencillamente sustituyendo los números de una base por los equivalentes de la otra; esto es correcto sólo cuando ambas bases son potencias enteras del mismo número. El valor de un número en cualquier base viene dado por: D = p 1 i= n d i r donde r es la base del número, p indica el número de dígitos a la izquierda de la coma, y n indica el número de dígitos a la derecha. i 8 4
5.2.3. Conversión general de sistemas numéricos El valor decimal de un número en cualquier base se determina convirtiendo cada dígito del número en su equivalente en base 10, y luego se aplica la fórmula usando aritmética en base 10. Método alternativo: 9 5.2.3. Conversión general de sistemas numéricos Para convertir de decimal a base r, se sigue el método de la división sucesiva. La división sucesiva por r de un número decimal generará el número en base r equivalente formado por los restos de las divisiones. El primer resto que se genera es el dígito menos significativo (LSD). 10 5
5.2.4. Suma y resta de números no decimales 1. Para sumar dos números binarios, x = x m-1...x 0 + y = y m-1...y 0, 2. se suman los bits menos significativos, x 0 + y 0 + 0 (acarreo inicial, c 0 =0) = s 0 + c 1 que produce un bit de acarreo de salida, c 1, y el bit de suma, s 0 3. Se sigue este proceso para cada par de bits, de derecha a izquierda, y se incluye el acarreo de salida de cada columna en la suma de la columna siguiente 11 5.2.4. Suma y resta de números no decimales 1 1 0 0 1 1 0 0 1 1 0 0 12 6
5.2.4. Suma y resta de números no decimales La resta binaria se realiza de forma similar, restando un par de bits a la vez, obteniendo en cada paso un bit de adeudo (borrow) y un bit de resta. 13 5.2.5. Representación de números negativos Representación en signo y magnitud El número está formado por dos partes, la magnitud y el signo, que puede ser + ó -. En los números binarios, el signo se representa mediante un único bit adicional (0 si es positivo y 1 si es negativo) cuya posición es la del MSB 01111011 2 = +123 10 11111011 2 = -123 10 bit de signo Teniendo en cuenta que hay dos posibles representaciones del cero, cualquier entero en signo y magnitud con n bits está dentro del rango que va de (2 n-1-1) a +(2 n-1-1). 14 7
5.2.5. Representación de números negativos Representación en signo y magnitud La aritmética en signo y magnitud requiere que se comparen tanto los signos como las magnitudes de los operandos. Si el signo de ambos números es el mismo, se suman las magnitudes y se añade el mismo signo. Si los signos son diferentes, hay que comparar las magnitudes: Si son iguales, el resultado es 0 Si son distintas, restamos a la magnitud mayor la más pequeña y el resultado hereda el signo de la mayor 15 5.2.5. Representación de números negativos Representación de complemento Cualquier entero se puede representar por: n 1 i= 0 i D = d r = d Κ i n 1d n 2 d1d0 donde n es el número de dígitos y r la base. En el sistema en complemento a la base r, se define el complemento de D con n dígitos como: D = r n D Alternativamente, podemos obtener el complemento a la base de la siguiente forma: ' D = D + 1 16 8
5.2.5. Representación de números negativos Representación de complemento Ventajas Representación de números negativos D + D = 0 La realización de sumas y restas es más rápida ya que se elimina la necesidad de comparadores. 17 5.2.5. Representación de números negativos Representación de complemento Complemento a uno. Margen con n bits 2 n-1 a +2 n-1 El bit más significativo indica el signo y el resto el módulo si el número es positivo. En caso de ser negativo el módulo es el resultante de cambiar los 1 por 0 y viceversa 01010101 2 = 85 10 10101010 2 = -85 10 Complemento a dos. Margen con n bits (2 n-1 +1) a +2 n-1 Igual al complemento a uno, pero si el número es negativo se suma 1 al resultado. Es la representación más utilizada. 01010101 2 = 85 10 10101011 2 = -85 10 18 9
5.2.5. Representación de números negativos Representación de complemento A veces, mientras se realizan operaciones aritméticas es necesario pasar de números de n bits a números de m bits Extensión de signo Si m>n, se repite el bit de signo en las m-n posiciones después del bit de signo del número original (desde la posición n hasta la m-1) Truncamiento de signo Si n>m, se hace un truncamiento de signo, descartando los m-n bits que siguen al bit de signo. Sin embargo, este número truncado es válido solamente cuando todos los bits descartados son iguales al bit de signo 19 5.2.6. Suma y resta de complemento a dos Suma normal, no diferenciándose los negativos Resta, como una suma pero complementando a dos el sustraendo x-y = x+ (-y) Se ignora cualquier acarreo del bit de signo 20 10
5.2.6. Suma y resta de complemento a dos Suma normal, no diferenciándose los negativos Resta, como una suma pero complementando a dos el sustraendo x-y = x+ (-y) Se ignora cualquier acarreo del bit de signo 21 5.2.6. Suma y resta en complemento a 2 Desbordamiento Se produce desbordamiento si los signos de los sumandos son iguales y el del resultado es diferente o que los acarreos de entrada y salida del bit más significativo son diferentes) 22 11
5.2.7. Código binarios para números decimales Los más utilizados son: BCD y 1-de-10 (para excitación de dispositivos externos como relés o LED) 23 5.2.8. Código Gray El código Gray es un código reflejado: 1. Las primeras 2 n palabras de un código Gray de (n+1) bit son idénticas a las de un código de n bits, añadiendo un cero. 2. Las últimas 2 n palabras de un código Gray de (n+1) bit son iguales a las de un código de n bits, pero escritas en orden inverso y añadiendo un 1 24 12
5.2.9. Códigos detectores y correctores de errores bit de paridad Pueden ser de paridad par o paridad impar Se añade un bit, que puede ser un 1 o un 0, según sea necesario para conseguir que el número total de 1 sea par o impar Con este sistema se puede detectar el error en un bit Concepto de distancia La distancia de un código es el número de bits diferentes que hay entre cualesquiera dos palabras del código Un código es capaz de detectar errores de un bit (errores simples) cuando su distancia mínima es 2 25 5.2.9. Códigos detectores y correctores de errores Códigos detectores de errores Un código es capaz de corregir errores de un bit (errores simples) cuando su distancia mínima es mayor a 2 (es decir es de tres o más) 26 13