Sistemas de numeración y códigos

30
CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-1 SISTEMAS DE NUMERACIÓN Y CÓDIGOS 1. Introducción El acelerado desarrollo de la electrónica y en especial los sistemas digitales han posibilitado su aplicación en diversos campos de la ciencia y tecnología, en estas aplicaciones constantemente nos encontramos con la presencia o ausencia de señales (1 ó 0 lógico) ordenadas de una manera preconcebida, esto ha dado lugar a la representación de cantidades, símbolos y letras, que se las conoce como códigos; esto es importante para poder interpretar y representar con eficiencia y precisión cuando se requiere su utilización en sistemas de transmisión, procesamiento de datos, control industrial, sistemas ordenadores de datos, y cálculo. El propósito de éste capítulo es dar una fundamentación precisa sobre los sistemas de numeración y códigos, por lo que analizaremos en primera instancia el sistema de numeración decimal, luego abarcaremos el concepto básico de numeración binaria, octal y hexadecimal. La comprensión de estos sistemas nos ayudará a conocer la variedad de códigos digitales utilizados en distintas aplicaciones. 2. Representaciones numéricas En la tecnología actual hay dos formas de representación de valores numéricos: Analógica Digital 2.1 Representación analógica La representación analógica de una cantidad ó un símbolo es por otro directamente proporcional, por ejemplo como lo hace el velocímetro de un automóvil, en el que la deflexión del indicador es proporcional a la velocidad del automóvil; si el indicador cambia de posición se debe a que la velocidad aumentó o disminuyó. Otro ejemplo es el control de temperatura de un ambiente, en el cual el elemento sensor entrega una tensión proporcional a la temperatura ambiente, si la temperatura cambia gradualmente ocurrirá un cambio continuo de la tensión entregada por el sensor. Asimismo una cantidad analógica podría ser, el micrófono de un sistema de audio, en este componente el voltaje de salida es generado en proporción a la intensidad de la onda de sonido con la que se excita al micrófono, la variación del voltaje de salida sigue a las variaciones del sonido de entrada al micrófono. Una característica importante de las cantidades analógicas es que estas pueden variar gradual y continuamente en un rango de valores; el velocímetro de un automóvil puede tener un

Transcript of Sistemas de numeración y códigos

Page 1: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-1

SISTEMAS DE NUMERACIÓN Y CÓDIGOS

1. Introducción

El acelerado desarrollo de la electrónica y en especial los sistemas digitales han posibilitado su aplicación en diversos campos de la ciencia y tecnología, en estas aplicaciones constantemente nos encontramos con la presencia o ausencia de señales (1 ó 0 lógico) ordenadas de una manera preconcebida, esto ha dado lugar a la representación de cantidades, símbolos y letras, que se las conoce como códigos; esto es importante para poder interpretar y representar con eficiencia y precisión cuando se requiere su utilización en sistemas de transmisión, procesamiento de datos, control industrial, sistemas ordenadores de datos, y cálculo.

El propósito de éste capítulo es dar una fundamentación precisa sobre los sistemas de numeración y códigos, por lo que analizaremos en primera instancia el sistema de numeración decimal, luego abarcaremos el concepto básico de numeración binaria, octal y hexadecimal. La comprensión de estos sistemas nos ayudará a conocer la variedad de códigos digitales utilizados en distintas aplicaciones.

2. Representaciones numéricas

En la tecnología actual hay dos formas de representación de valores numéricos:

Analógica

Digital

2.1 Representación analógica

La representación analógica de una cantidad ó un símbolo es por otro directamente proporcional, por ejemplo como lo hace el velocímetro de un automóvil, en el que la deflexión del indicador es proporcional a la velocidad del automóvil; si el indicador cambia de posición se debe a que la velocidad aumentó o disminuyó.

Otro ejemplo es el control de temperatura de un ambiente, en el cual el elemento sensor entrega una tensión proporcional a la temperatura ambiente, si la temperatura cambia gradualmente ocurrirá un cambio continuo de la tensión entregada por el sensor. Asimismo una cantidad analógica podría ser, el micrófono de un sistema de audio, en este componente el voltaje de salida es generado en proporción a la intensidad de la onda de sonido con la que se excita al micrófono, la variación del voltaje de salida sigue a las variaciones del sonido de entrada al micrófono.

Una característica importante de las cantidades analógicas es que estas pueden variar gradual y continuamente en un rango de valores; el velocímetro de un automóvil puede tener un

Page 2: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-2

valor entre 0 y 100 KPH, análogamente la salida del micrófono puede variar en un rango de 0 a 10mV.

2.2 Representaciones Digitales

La representación digital de cantidades no es en proporciones continuas sino en proporciones discretas (paso a paso) indicadas por símbolos denominados dígitos. Consideremos por ejemplo un reloj digital, que muestra el tiempo en forma de dígitos decimales, representando a las horas y minutos (y algunas veces también los segundos); como sabemos el cambio del tiempo es continuo pero el reloj digital no cambia continuamente sino en lapsos discretos de un minuto (o un segundo); en otras palabras esta representación del tiempo es digital.

En resumen las cantidades analógicas son continuas y las cantidades digitales son discretas

Por la naturaleza discreta de la representación digital no existe ambigüedad cuando se lee el valor de una cantidad digital, mientras que el valor de una cantidad analógica está sujeto a su interpretación.

3. Sistemas de numeración

Los números pueden representarse en diversos sistemas de numeración que se diferencian por su base. La base de un sistema de numeración corresponde al número de símbolos distintos utilizados para la representación de las cantidades, entre los muchos sistemas de numeración los que más nos interesan por su aplicación en los sistemas digitales son:

Sistemas de numeración binaria

Sistemas de numeración octal

Sistemas de numeración decimal

Sistemas de numeración hexadecimal

Los sistemas de numeración se representan adecuadamente por un polinomio de potencias de la base multiplicadas por el símbolo del sistema de numeración respectivo.

Por ejemplo, en un sistema de base b un número N cualquiera puede ser representado en general mediante un polinomio de la siguiente forma:

N=anbn+an-1bn-1+...aibi+...+a0b0+a-1b-1+a-2b-2+...+a-mb-m

Donde: b es la base del sistema de numeración. a es un símbolo perteneciente al sistema de numeración. n y m representan la potencia ó el peso posicional de los dígitos enteros y fraccionarios respectivamente.

El símbolo a debe cumplir la condición:

Page 3: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-3

0≤a<b

Asimismo el polinomio puede ser escrito como:

∑ ∑ ∑

N=Ne+Nf

Donde: 0 i

e ii=nN = a b∑ Parte entera

-m if ii=-1

N = a b∑ Parte fraccionaria

4. Notación posicional

El polinomio que describe un sistema de numeración cualquiera es una notación posicional o de peso posicional, esto significa que cada posición de dígito en un número tiene un peso particular que determina la magnitud de ese número; el peso está determinado por la potencia de la base del sistema de numeración utilizado.

4.1 Sistema de numeración Decimal

El sistema de numeración con el que todos estamos familiarizados es el sistema de numeración decimal, como su nombre indica la base del sistema es 10 (b=10), y el número de símbolos de este sistema de numeración debe ser:

0≤ai<10

Por lo que el sistema de numeración decimal tiene diez símbolos que son: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

Los pesos posicionales de la parte entera en este sistema son: 100 unidades, 101 decenas, 102 centenas, etc. y de la parte fraccionaria son: 10-1 décimas, 10-2 centésimas, etc. y el símbolo de separación entre la parte entera y la fraccional es el punto decimal.

Por ejemplo, representemos el número 2745.94; de acuerdo a su polinomio de potencias tendremos:

(2x103)+(7x102)+(4x101)+(5x100)+(9x10-1)+(4x10-2)= (2x1000)+(7x100)+(4x10)+(5x1)+(9x0.1)+(4x0.01)= 2000+700+40+5+0.9+0.04=2745.94

En general, cualquier número de acuerdo al polinomio es simplemente la suma de los productos de cada símbolo por su peso posicional.

Page 4: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-4

En éste ejemplo, mostrado en la figura 2.1, el dígito de más a la izquierda (2x103) es el dígito más significativo o MSD porque lleva el mayor peso posicional, y el dígito de más a la derecha (4x10-2) es el dígito menos significativo o LSD porque tiene el menor peso posicional para la determinación del valor del número (la palabra dígito proviene del latín dedo).

Valor p. 10 5 10 4 10 3 10 2 10 1 10 0 . 10-1 10-2 10-3 10-4

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 0 0 2 7 4 5 . 9 4 0 0 ↑ ↑ ↑

MSD Punto decimal LSD Figura 2.1 Pesos posicionales del sistema decimal.

Una característica del sistema de numeración decimal es que usando solamente una posición se puede representar 10 números diferentes (0 al 9), con dos posiciones se pueden representar 102=100 números diferentes (0 al 99) y así sucesivamente, en general con n dígitos se pueden representar 10n diferentes números, la longitud del número en todo momento es de 0 a 10n-1; para identificar este sistema de numeración se suele utilizar la base como subíndice (2745.9410).

4.2 Sistema de numeración Binaria

Desafortunadamente el sistema de numeración decimal no es el más conveniente para implementarlo en sistemas digitales puesto que es muy dificultoso diseñar equipos electrónicos que trabajen con 10 niveles diferentes de tensión (representando cada nivel a un dígito decimal), por otro lado es muy sencillo el diseño de circuitos electrónicos que operen solamente con dos niveles de tensión.

Por tal razón todos los sistemas digitales utilizan el sistema de numeración binaria; como su nombre indica la base del sistema es 2 (b=2), el número de símbolos de este sistema de numeración debe cumplir:

0≤ai<2

Por lo que el sistema de numeración binaria solamente tiene dos símbolos el 0 y el 1 que reciben el nombre de dígitos binarios o bits, estos dígitos binarios tienen el mismo valor básico del 0 y el 1 en el sistema de numeración decimal.

Los pesos posicionales de la parte entera de un número binario determinan la magnitud de ese número, el peso de cada posición en este sistema de numeración está determinado por alguna potencia de la base, y el peso posicional de la parte fraccionaria está determinado por las potencias negativas de la base, el punto que separa la parte entera de la fraccionaria se denomina punto binario.

Por ejemplo representaremos el número binario 1011.101 que puede ser reemplazado por su polinomio de potencias como:

1011.101=(1x23)+(0x22)+(1x21)+(1x20)+(1x2-1)+(0x2-2)+(1x2-3) =(1x8)+(0x4)+(1x2)+(1x1)+(1x0.5)+(0x0.25)+(1x0.125) =8+0+2+1+0.5+0.125

Page 5: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-5

=11.62510

En este ejemplo, mostrado en la figura 2.2, el bit de más a la izquierda (1x23) es el bit más significativo MSB porque este lleva el mayor peso posicional. El bit de más a la derecha (1x2-3) es el bit menos significativo o LSB porque este lleva el menor peso posicional.

Valor p. 2 5 2 4 2 3 2 2 2 1 2 0 . 2-1 2-2 2-3 2-4 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 0 0 1 0 1 1 . 1 0 1 0 ↑ ↑ ↑

MSB Punto Binario LSB Figura 2.2 Pesos posicionales del sistema binario.

Para identificar a este sistema de numeración se indica la base como subíndice (1011.1012).

4.3 Sistema de numeración Octal

El sistema de numeración Octal es muy importante en el trabajo de las computadoras digitales tiene como base el ocho (b=8); el número de símbolos de este sistema de numeración debe cumplir:

0≤ai<8

Por lo que tiene ocho símbolos diferentes para los que se utilizan los símbolos del 0 al 7 del sistema de numeración decimal; estos ocho dígitos tienen el mismo valor básico que en el sistema numérico decimal. Al igual que en el sistema de numeración binaria cada dígito lleva un peso posicional que determina la magnitud de ese número, el peso de cada posición está determinado por alguna potencia de la base del sistema de numeración (en el presente caso 8). Para evaluar la cantidad total que representa un número considerar el dígito específico y su peso posicional. En la figura 2.3 se muestra el peso posicional de cada dígito.

Valor p. 8 5 8 4 8 3 8 2 8 1 8 0 . 8-1 8-2 8-3 8-4 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 0 0 0 3 7 2 . 0 1 0 0 ↑ ↑ ↑

MSB Punto Octal LSB Figura 2.3 Pesos posicionales del sistema octal.

Por ejemplo representaremos el número octal 372.01 que puede ser reemplazado por su polinomio de potencias como:

372.01=(3x82 )+(7x81)+(2x80)+(0x8-1)+(1x8-2) =(3x64)+(7x8)+(2x1)+(0x0.125)+(1x0.015625) =192+56+2+0.015625 =250.01562510

El punto que separa la parte entera de la fraccionaria en este sistema se denomina punto octal, el dígito de más a la izquierda se denomina dígito más significativo MSD porque lleva el

Page 6: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-6

mayor peso posicional, y el dígito de más a la derecha se denomina dígito menos significativo o LSD porque lleva el menor peso posicional en la determinación del valor equivalente decimal del número. Para la identificación de este sistema de numeración se suele indicar la base como subíndice (372.018).

4.4 Sistema de numeración Hexadecimal

Este es otro sistema de numeración frecuentemente utilizado en las computadoras digitales, el sistema de numeración hexadecimal tiene una base 16 (b=1610), el número de símbolos de este sistema de numeración debe cumplir:

0≤ai<16

De este modo se tienen 16 símbolos diferentes para lo que se acostumbra utilizar los 10 dígitos decimales y las primeras letras mayúsculas del alfabeto (A a la F) esto por la necesidad de representación de 16 valores diferentes con un solo símbolo para cada dígito. Como en los anteriores casos, para la identificación de este sistema se suele utilizar la base como subíndice. Todos los símbolos semejantes tienen el mismo valor equivalente al decimal, por ejemplo 02=08=010=016; 38=310=316; etc. y para los números mayores al 9 existe la siguiente relación: 1010=A16, 1110=B16, 1210=C16, 1310=D16, 1410=E16, 1510=F16

Como en los anteriores sistemas de numeración, cada posición de un dígito en el número hexadecimal también lleva un peso posicional que determina la magnitud del número, el peso de cada posición está determinado por alguna potencia de la base del sistema de numeración (en éste caso 1610), para evaluar el valor equivalente decimal de la cantidad total del número considerar el dígito específico y el peso de su posición; en la figura 2.4 se muestra el peso posicional de cada dígito.

Valor p. 16 5 16 4 16 3 16 2 16 1 16 0 . 16-1 16-2 16-3 16-4

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 0 0 E 5 D 7 . A 3 0 0 ↑ ↑ ↑

MSD Punto Hexadecimal LSD Figura 2.4 Pesos posicionales del sistema hexadecimal.

Por ejemplo: El número hexadecimal E5D7.A3 puede ser representado por su polinomio de potencias como sigue:

E5D7.A316=(Ex163)+(5x162)+(Dx161)+(7x160)+(Ax16-1)+(3x16-2) =(14x4096)+(5x256)+(13x16)+(7x1)+(10x1/16)+(3x1/256) =57344+1280+208+7+0.625+0.01171875 =58839.6367187510

El punto que separa la parte entera de la fraccionaria se denomina punto hexadecimal, las definiciones de MSD y LSD son las mismas que para los otros sistemas de numeración.

4.5 Representación decimal, binaria, octal y hexadecimal de los números

Page 7: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-7

Utilizando el desarrollo con el polinomio de potencias de la base en los sistemas de numeración analizados, se puede representar cualquier número en las distintas bases, para mostrar esta relación formaremos una tabla comparativa de los sistemas descritos para números enteros, mostrado en la figura 2.5. De la misma manera se puede realizar una tabla comparativa entre números fraccionarios.

Decimal Binario Octal Hexadecimal 0 0 0 0 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 16 10000 20 10 17 10001 21 11 18 10010 22 12 19 10011 23 13 20 10100 24 14 21 10101 25 15 22 10110 26 16 23 10111 27 17 24 11000 30 18 25 11001 31 19 26 11010 32 1A 27 11011 33 1B 28 11100 34 1C 29 11101 35 1D 30 11110 36 1E 31 11111 37 1F 32 100000 40 20 33 100001 41 21 34 100010 42 22

Figura 2.5 Tabla comparativa entre sistemas de numeración Decimal, Binario, Octal y Hexadecimal.

5. Conversión entre sistemas de numeración

Page 8: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-8

Trabajando con números de distinta base con frecuencia es necesario determinar el equivalente de un número de base b1 a otro de base b2, como ya sabemos un número N de base cualquiera se puede representar mediante un polinomio de potencias de la base formada por una parte entera y otra fraccionaria:

-m 0 -mi i ii i i e fi=n i=n i=-1

N= a b = a b + a b =N +N∑ ∑ ∑

Desarrollando se tiene:

N=anbn+an-1bn-1+...+aibi+...+a1b1+a0b0+a-1b-1+...+a-mb-m

Para la conversión de este número en otro de base distinta, se debe separar la parte entera de la fraccionaria y aplicar, en forma separada, los métodos que se explican a continuación, luego de la conversión se juntarán nuevamente, la parte entera y la fraccionaria del número convertido a diferente base, respetando la posición que separa la parte entera de la fraccionaria.

Tomemos ahora la parte entera del número N desarrollado en polinomio de potencias:

Ne=anbn+an-1bn-1+...+aibi+...+a2b2+a1b1+a0b0

Se demuestra fácilmente que si un número entero expresado en un sistema de numeración de base b1 se divide por otra base b2 y el cociente se vuelve a dividir por b2 y así sucesivamente; los residuos obtenidos en cada división corresponden a los símbolos del número en el nuevo sistema de base b2. En efecto, si el número N en base b1 suponemos ya convertido a la base b2 y expresado mediante su polinomio equivalente (el desarrollo del polinomio nos da siempre el equivalente decimal del número):

Nb1=anb2n+an-1b2

n-1+...+aib2i+...+a2b2

2+a1b21+a0b2

0

Dividiendo ambos miembros de la ecuación por la base b2 resulta:

Nb1/b2=anb2n-1+an-1b2

n-2+...+aib2i-1+...+a0/b2

De esto se deduce que al dividir Nb1 por b2 el residuo obtenido es igual al símbolo del dígito menos significativo (LSD) del número representado en base b2. Al cociente: anb2

n-1+an-1b2n-2

+...+aib2i-1+...+a1b2

0 designamos como N1 y dividiendo nuevamente por b2 resulta:

N1/b2=anb2n-2+an-1b2

n-3+...+aib2i-2+...+a1/b2

Donde el residuo ahora representa el segundo símbolo del dígito menos significativo de N en la base b2. Continuando el proceso se llega a obtener todos los dígitos de N en base b2, siendo el dígito más significativo (MSD) el último residuo.

Tomemos ahora la parte fraccionaria del número N desarrollado mediante su polinomio de potencias:

Nf=a-1b-1+a-2b-2+...+a-mb-m

Se puede demostrar fácilmente que si se multiplica un número fraccionario en un sistema de base b1 por la base b2 luego, este resultado nuevamente es multiplicado por la base b2 y así sucesivamente las partes enteras obtenidas, formarán el símbolo del número fraccionario en el sistema de base b2.

Page 9: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-9

Para la conversión de un número fraccionario en base b1 a otro en base b2 partiremos de la igualdad:

Nb1=a-1b2-1+a-2b2

-2+...+a-mb2-m

Multiplicando ambos miembros por b2 resultan:

b2Nb1=a-1+a-2b2-1+...+a-mb2

-m+1

La parte entera obtenida a-1 representa el símbolo del dígito más significativo (MSD) del número N en base b2, si la parte fraccionaria resultante designamos ahora con M y volvemos a multiplicar por b2 ambos miembros de la ecuación resultan:

M=a-2b2-1+a-3b2

-2+...+a-mb2-m+1

b2M=a-2+a-3b2-1+...+a-mb2

-m+2

Donde la parte entera a-2 es el segundo símbolo del dígito más significativo del número N en la base b2. Continuando el proceso se obtienen todas las cifras de N en base b2, este proceso terminará cuando la parte fraccionaria obtenida sea nula, en caso de no ocurrir así el proceso se detiene al llegar al grado de precisión requerido.

Tal como se vio, el desarrollo del polinomio de potencias de la base en los sistemas de numeración binaria, octal, hexadecimal y afectando a cada dígito por su peso posicional correspondiente y realizando la suma total se obtiene su valor equivalente en el sistema de numeración decimal, veamos cómo se aplica este procedimiento en cada caso.

5.1 Conversión de decimal a binario

Para convertir un número decimal con parte entera y fraccionaria a un sistema de numeración de base 2, se debe separar la parte entera y fraccionaria a partir del punto decimal, procediéndose luego a la conversión de la parte entera mediante divisiones sucesivas del número por 2, anotándose el residuo; al dividir por dos el residuo será siempre 1 ó 0, luego se procede a la conversión de la parte fraccionaria mediante la multiplicación sucesiva del número fraccionario por 2 y anotando la parte entera; cuando se multiplica por 2 la parte entera será siempre 1 ó 0.

Por ejemplo, supongamos que queremos convertir el número 25.37510 a su binario equivalente:

25.37510=2510+0.37510=Ne+Nf Ne=2510

25÷2=12 con residuo de 1 (LSB) ________________________ 12÷2=6 con residuo de 0 _________________________ | 6÷2=3 con residuo de 0 _____ ___________________ | | 3÷2=1 con residuo de 1 _______________________ | | | 1÷2=0 con residuo de 1 (MSB) ____________________ | | | | | | | | | Ne=2510=110012

Page 10: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-10

Page 11: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-11

Ahora convertiremos la parte fraccionaria:

Nf=0.37510 0.375x2=0.75 con parte entera de 0 (MSB) _____________ 0.75x2=1.5 con parte entera de 1 ____________|_ 0.5x2=1.0 con parte entera de 1 (LSB) _____________| |_ | | | Nf=0.37510=0.0112

Finalmente la conversión completa de 25.37510 se puede escribir como la combinación de la conversión de la parte entera y fraccionaria:

25.37510=11001.0112

5.1.1 Conversión de binario a decimal

Un sistema de numeración binario, es un sistema posicional, donde cada dígito binario tiene un peso posicional, determinado por la posición de la potencia de la base; para convertir un número binario a su equivalente en decimal, se aprovecha el polinomio de potencias de la base, que es el principio de los pesos posicionales, sumando los productos de los dígitos binarios (0 ó 1), con los pesos de las posiciones, cuando el número binario está compuesto de parte entera y fraccionaria no es necesaria la separación de sus partes entera y fraccionaria para la conversión, respetando la posición del punto binario. Un ejemplo ilustrará este proceso: convertir el número binario 101101.112 a su equivalente en decimal.

101101.112=(1x25)+(0x24)+(1x23)+(1x22)+(0x21)+(1x20)+ (1x2-1)+(1x2-2) =(1x32)+(0x16)+(1x8)+(1x4)+(0x2)+(1x1)+(1x0.5)+ (1x0.25) =32+0+8+4+0+1+0.5+0.25 =45.7510

5.2 Conversión de decimal a octal

El método de conversión del sistema de numeración decimal a su equivalente en octal es similar al utilizado para la conversión de decimal a binario, con la excepción que la base del número ahora es 8 en lugar de 2. Para convertir un número entero decimal a su equivalente en octal se realizan divisiones sucesivas del número decimal por 8 anotando el residuo de cada división, los residuos representan a los dígitos del número octal, el primer residuo constituye el LSD; en caso que el número decimal sea fraccionario, la conversión de la parte fraccionaria, se hace mediante multiplicaciones sucesivas por 8, anotando la parte entera como dígito del número octal; la parte entera del primer producto constituye el MSD. Cuando se divide un número entero decimal por 8 se obtiene como residuo números inferiores al 8, de igual manera cuando se realiza el producto del número decimal fraccionario por 8, se obtiene como parte entera del resultado números inferiores al 8.

Page 12: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-12

Un ejemplo ilustrará este proceso: convertir el número decimal 124.7812510 a su equivalente en octal:

124.7812510=12410+0.7812510=Ne+Nf Ne=12410 124÷8=15 con residuo de 4 (LSD) ________________________ 15÷8=1 con residuo de 7 ________________________ | 1÷8=0 con residuo de 1 (MSD) ______________________ | | | | | 12410=17410 Nf=0.7812510 0.78125x8=6.25 con parte entera de 6(MSD) _______________ 0.25x8=2.00 con parte entera de 2(LSD) _______________|_ | | 0.7812510=0.628

por lo tanto:

124.7812510=174.628

5.2.1 Conversión de octal a decimal

La conversión de un número octal a su equivalente decimal se realiza, aprovechando el polinomio de potencias de la base, que es el principio de los pesos posicionales del sistema octal, por lo que, se debe multiplicar, cada dígito octal, por el peso correspondiente a su posición y luego efectúar la suma de los productos parciales. El método es el mismo para la conversión de números octales con parte entera y fraccionaria, respetando la posición del punto octal.

Un ejemplo ilustrará este proceso: convertir el número octal 412.3028 a su equivalente decimal.

412.3028=(4x82)+(1x81)+(2x80)+(3x8-1)+(0x8-2)+(2x8-3) =(4x64)+(1x8)+(2x1)+(3x0.125)+(0x0.015625)+ (2x0.001953125) =256+8+2+0.375+0.00390625 =266.67890962510

5.3 Conversión de octal a binario

La conversión entre números octales y binarios es fácilmente realizada tomando en cuenta que el valor de la base octal 8=23, en consecuencia son necesarios tres dígitos binarios (bits) para la representación del valor de cualquier dígito del sistema de numeración octal compuesto por 8 símbolos (0 al 7); la equivalencia en binario de los 8 dígitos octales se presenta en la figura 2.6.

Dígito Octal 0 1 2 3 4 5 6 7 Binario

equivalente 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

Figura 2.6 Equivalente binario de los dígitos octales.

Page 13: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-13

Utilizando estas ocho conversiones, cualquier número octal puede ser convertido en su binario equivalente, convirtiendo individualmente a binario cada dígito del número octal, un ejemplo ilustrará este proceso: convertir el número octal 54.318 a su equivalente binario.

5 4 . 3 1 ↓ ↓ ↓ ↓ ↓

MSB → 1 0 1 1 0 0 . 0 1 1 0 0 1 ← LSB

Resultando:

54.318=101100.0011001

Otro ejemplo: convertir el número octal 1752.7148 a su equivalente binario:

1 7 5 2 . 7 1 4

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ MSB → 0 0 1 1 1 1 1 0 1 0 1 0 . 1 1 1 0 0 1 1 0 0 ← LSB

Vemos nuevamente que cada dígito octal es convertido a su equivalente en binario de 3 bits, sin embargo en este ejemplo hay dos ceros no significativos delante del MSB y después del LSB ya que estos ceros no tienen ninguna importancia en la determinación del valor final deberán ser eliminados, en consecuencia el resultado de la conversión será:

1752.7148=1111101010.11100112

5.3.1 Conversión de binario a octal

Para convertir un número binario a su equivalente en octal, los símbolos deben ser separados en grupos de tres bits a partir del punto binario, la parte entera de derecha a izquierda y la parte fraccionaria de izquierda a derecha. Si el último grupo no contiene los bits necesarios para completar grupos de tres bits, se deben añadir ceros a la izquierda del MSB en la parte entera y ceros a la derecha del LSB en la parte fraccionaria, luego cada grupo de tres bits se convierte a su equivalente octal. Para ilustrar este proceso: convertir el número binario 101010.1010112 a su equivalente en octal:

1 0 1 0 1 0 . 1 0 1 0 1 1 ↓ ↓ ↓ ↓ ↓ 5 2 . 5 3

Por lo que:

101010.1010112=52.538

Otro ejemplo: convertir el número binario 10010101.1011 a su equivalente en octal:

0 1 0 0 1 0 1 0 1 . 1 0 1 1 0 0 ↓ ↓ ↓ ↓ ↓ ↓ 2 2 5 . 5 4

Por lo que:

10010101.10112=225.548

Page 14: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-14

Como en otros casos la parte entera del número se separa en grupos de 3 bits empezando del punto binario; nótese que el tercer grupo solo contiene 2 bits, sin embargo se le añade un cero a la izquierda del grupo sin que por ello cambie el valor del número binario. Luego la parte fraccionaria del número también es separada en grupos de 3 bits desde el punto binario, nótese que en el segundo grupo solo se tiene 1 bit por lo que se le añaden dos ceros a la derecha para completar el grupo sin que esto cambie el valor del número binario.

5.4 Conversión de decimal a hexadecimal

La conversión de decimal a hexadecimal se realiza de la misma manera que en la conversión de decimal a binario u octal, pero considerando en este caso que la base del número hexadecimal es 1610. Si el número decimal está compuesto de parte entera y fraccionaria, se las separa y se procede con las respectivas conversiones. La parte entera del número es dividida por el número decimal 1610 y se anota el residuo, luego el cociente se divide nuevamente por 1610 y se anota el residuo continuando el proceso hasta encontrar un cociente de cero. El último residuo constituye el MSD y el primer residuo el LSD, en caso de obtener un residuo mayor a 9, el número de dos dígitos es reemplazado por una letra hexadecimal equivalente. Para la conversión de la parte fraccionaria del número hexadecimal se multiplica por 1610 y se anota la parte entera constituyendo el MSD, luego el resto se vuelve a multiplicar por 1610 y se anota la parte entera continuando con el proceso hasta el grado de exactitud deseado siendo la parte entera del último producto el LSD; de igual manera si la parte entera supera el 9 el número de 2 dígitos se reemplaza con la letra hexadecimal equivalente. Este proceso se ilustra con el ejemplo de conversión del número decimal 124.7812510 a su valor equivalente en hexadecimal:

124.7812510=12410+0.7812510=Ne+Nf

Ne=124

124÷16=7 con resto de 12=C _______________ 7÷16=0 con resto de 7 ______________ | | | 12410=7C16 Nf=0.7812510 0.78125x16=12.5 con parte entera de 12=C _____ 0.5x16=8.0 con parte entera de 8 ____ |_ | | 0.7812510=0.C816

Por lo que:

124.7812510=7C.C816

Page 15: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-15

5.4.1 Conversión de hexadecimal a decimal

Para convertir un número hexadecimal a su equivalente decimal simplemente se debe recordar el peso posicional determinado por la potencia de la base del número hexadecimal y proceder como en las conversiones ya vistas de binario, octal a decimal. Para ilustrar este proceso: convertir el número hexadecimal E5D7.A316 a su equivalente decimal:

E5D7.A316=(Ex163)+(5x162)+(Dx161)+(7x160)+(Ax16-1)+(3x16-2) =(14x4096)+(5x256)+(13x16)+(7x1)+(10x1/16)+(3x1/162) =57344+1280+208+7+0.625+0.01171875 =58839.6367187510

5.5 Conversión de hexadecimal a binario

La conversión de números hexadecimales a binarios se realiza de la misma manera que la conversión de octal a binario, ya que la base hexadecimal es un múltiplo de 2 (16=24), por lo que se necesitan 4 dígitos binarios (4 bits) para la representación de cualquier dígito del sistema de numeración hexadecimal que contiene 16 símbolos tal como se ilustra en la figura 2.7

Decimal Hexadecimal Binario 0 0 0 0 0 0 1 1 0 0 0 1 2 2 0 0 1 0 3 3 0 0 1 1 4 4 0 1 0 0 5 5 0 1 0 1 6 6 0 1 1 0 7 7 0 1 1 1 8 8 1 0 0 0 9 9 1 0 0 1 10 A 1 0 1 0 11 B 1 0 1 1 12 C 1 1 0 0 13 D 1 1 0 1 14 E 1 1 1 0 15 F 1 1 1 1

Figura 2.7 Equivalencia en binario de los dígitos hexadecimales.

Utilizando estas 16 equivalencias se puede convertir cualquier número hexadecimal a su binario equivalente mediante la conversión individual de cada dígito del número hexadecimal, este proceso se ilustra mediante el ejemplo de conversión del número hexadecimal 8F.4116 a su equivalente en binario.

8 F . 4 1 ↓ ↓ ↓ ↓ ↓

1 0 0 0 1 1 1 1 . 0 1 0 0 0 0 0 1

Page 16: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-16

Resultando:

8F.4116=10001111.010000012

Otro ejemplo: convertir el número hexadecimal 175.4E16 a su equivalente en binario.

1 7 5 . 4 E ↓ ↓ ↓ ↓ ↓ ↓

0 0 0 1 0 1 1 1 0 1 0 1 . 0 1 0 0 1 1 1 0

Nuevamente cada dígito hexadecimal es convertido a su equivalente en binario de 4 dígitos, sin embargo en este ejemplo hay tres ceros no significativos delante del MSB y uno después del LSB, ya que estos ceros no tienen valor deben ser eliminados del resultado final.

5.5.1 Conversión de binario a hexadecimal

Para la conversión de un número binario a su equivalente en hexadecimal se deben separar en grupos de 4 bits a partir del punto binario, en la parte entera de derecha a izquierda y en la parte fraccionaria de izquierda a derecha a partir del punto binario; en ambos casos si el número no tiene los bits necesarios para completar los grupos de 4 bits, se deberá añadir a la izquierda del MSB en la parte entera y ceros a la derecha del LSB en la parte fraccionaria, luego cada grupo de 4 bits se convierte a su equivalente hexadecimal. Para ilustrar este proceso: convertir el número binario 10110110.010110112 a su equivalente en hexadecimal.

1 0 1 1 0 1 1 0 . 0 1 0 1 1 0 1 1 ↓ ↓ ↓ ↓ ↓ B 6 . 5 B

Por lo que:

10110110.010110112=B6.5B16

Otro ejemplo: convertir el número binario 110110101.0111012 a su equivalente en hexadecimal.

0 0 0 1 1 0 1 1 0 1 0 1 . 0 1 1 1 0 1 0 0 ↓ ↓ ↓ ↓ ↓ ↓ 1 B 5 . 7 4

Por lo que:

110110101.0111012=1B5.7416

Nótese que el tercer grupo de la parte entera solo tiene 1 bit por lo que se agregaron 3 ceros a la izquierda de ese bit sin que por ello cambie el valor del número binario, el segundo grupo de la parte fraccionaria solo tenía 2 bits por lo que se agregaron 2 bits a la derecha sin que por ello cambie el valor del número binario; luego se procede a la conversión de cada grupo de 4 bits a su equivalente hexadecimal.

Page 17: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-17

6. Códigos binarios

Cuando existe la necesidad de representar letras, números, caracteres especiales, etc. mediante un grupo de símbolos, lo que se hace es una codificación y el grupo de símbolos se denomina código; probablemente una de las formas más familiares de código es el código Morse, en el que con una serie de puntos y rayas representan números, letras del alfabeto y caracteres especiales. Cuando un número decimal, letra o símbolo es representado por un combinación binaria equivalente, a esto se le denomina codificación y al grupo de ceros y unos de la combinación binaria resultante se denomina código.

En todos los sistemas digitales donde se realice un proceso de datos en el que intervienen números y letras estos se representan mediante grupos de símbolos binarios o bits dando lugar a códigos alfanuméricos que representan a los caracteres. Por lo expuesto, se entiende por código una representación biunívoca de números, letras y símbolos de tal forma que a cada una de estas se asigna una combinación determinada de 0s y 1s y viceversa, de esta definición se deduce que los sistemas de numeración estudiados en los apartados anteriores, constituyen códigos de representación de números y cantidades.

Con n cifras binarias o bits se pueden obtener 2n combinaciones diferentes, a cada combinación de estas se le puede asignar una cantidad diferente, para ello el número de asignaciones posibles es el de permutaciones de las 2n combinaciones, es decir 2n! que constituyen otros tantos códigos binarios. Por esta asignación en general existen dos tipos de códigos binarios, los cuales son:

Códigos Ponderados

Códigos no Ponderados

Entre los ponderados tenemos el código binario natural y entre los no ponderados tenemos el código binario continuo y cíclico llamado también código de Gray.

6.1 Código binario natural

Cuando se realizó la conversión de los números de decimal a binario se encontró que con una combinación de ceros y unos que representaban cantidades, su incremento o reducción se traducía en el aumento o reducción de los ceros y unos de la combinación de acuerdo al peso posicional que se requería; un código de este tipo recibe el nombre de código binario natural, la utilización de este código presenta grandes ventajas en la realización de operaciones aritméticas tal como veremos más adelante.

Esta forma de codificación presenta una desventaja cuando las cantidades son grandes, ya que es difícil que con una mirada rápida a un número binario se reconozca su equivalente decimal, pero con la aplicación de los métodos de conversión vistos con anterioridad es posible determinar el valor equivalente buscado, el tiempo que se tarda en realizar la operación de conversión constituye la desventaja de este código por lo que se buscan otros tipos de codificación binaria compatibles con el sistema decimal que permita su conversión con mayor facilidad.

Page 18: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-18

6.2 Códigos binarios contínuos y cíclicos

Un código binario es continuo si las combinaciones correspondientes a números decimales consecutivos son adyacentes; se denomina combinación binaria adyacente a aquella que difiere solamente en un bit. Un código continuo, en el que la última combinación es adyacente a la primera, se denomina cíclico.

Para eliminar la posibilidad de aparición de combinaciones intermedias erróneas que pueden proporcionar una información incorrecta, se debe cambiar un sólo bit de una combinación a la contigua, este es conocido también como código de mínimo error, además como en este código, para el cambio de una combinación a otra adyacente, solo cambia un bit, toma un tiempo reducido y no tiene problemas de tiempo y velocidad, como en otros códigos en los que la diferencia entre una combinación y otra consecutiva es en más de un bit.

El código binario continuo y cíclico más difundido es el reflejado que recibe el nombre de código Gray; este corresponde a los códigos no ponderados, la denominación de reflejado es debido a que la formación de un código de n bits se realiza partiendo del código de n-1 bits, reflejando sus combinaciones simétricamente y añadiendo a su izquierda un bit 0 para las 2n-1

primeras combinaciones y un 1 para las 2n-1 siguientes.

A continuación se muestra la formación del código Gray de 2, 3, y 4 bits. Siguiendo el proceso, se puede deducir la formación de este código para un mayor número de bits.

Para n=2→22=4 combinaciones de dos bits

Desarrollo:

2n-1 primeras combinaciones

22-1=21=2 posibles combinaciones: 0 y 1

De acuerdo a la regla agregamos un 0 a la izquierda de 2n-1 primeras combinaciones, luego a sus 2n-1 siguientes combinaciones reflejadas, le agregamos un 1 a la izquierda, resultando:

0 0 0 1 2n-1 primeras combinaciones 0 1 _↑ Se agrega 0 a la izquierda ___ ↓ Se agrega 1 a la izquierda 1 2n-1 siguientes combinaciones 1 1 0 1 0

Para n=3 (partimos del código ya formado para n=2)

23=8 combinaciones de 3 bits

Page 19: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-19

Desarrollo: 23-1=22=4 posibles combinaciones

0 0 0 0 0 0 1 0 0 1 1 1 2n-1 primeras combinaciones 0 1 1 1 0 0 1 0 ___↑ Se agrega 0 a la izquierda ____ ↓Se agrega 1 a la izquierda 1 0 1 1 0 1 1 1 1 1 0 1 2n-1 siguientes combinaciones 1 0 1 0 0 1 0 0

Para n=4→24=16 combinaciones de cuatro bits

0 0 0 0 0 0 0

0 0 1 0 0 0 1 0 1 1 0 0 1 1 0 1 0 2n-1 primeras combinaciones 0 0 1 0 1 1 0 0 1 1 0 1 1 1 0 1 1 1 1 0 1 0 1 0 1 1 0 0 0 1 0 0 _____ ↑ Se agrega 0 a la izquierda

↓ Se agrega 1 a la izquierda 1 0 0 1 1 0 0 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 2n-1 siguientes combinaciones 1 1 1 0 0 1 0 1 0 1 0 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0

Page 20: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-20

En la figura 2.8, a modo de comparación, se muestra el código binario natural y el código de Gray para cuatro bits.

Dígito decimal

Código binario natural

Código Gray

0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 2 0 0 1 0 0 0 1 1 3 0 0 1 1 0 0 1 0 4 0 1 0 0 0 1 1 0 5 0 1 0 1 0 1 1 1 6 0 1 1 0 0 1 0 1 7 0 1 1 1 0 1 0 0 8 1 0 0 0 1 1 0 0 9 1 0 0 1 1 1 0 1 10 1 0 1 0 1 1 1 1 11 1 0 1 1 1 1 1 0 12 1 1 0 0 1 0 1 0 13 1 1 0 1 1 0 1 1 14 1 1 1 0 1 0 0 1 15 1 1 1 1 1 0 0 0

Figura 2.8 Tabla comparativa del código binario natural con el código de Gray.

En un capítulo posterior trataremos con toda profundidad el tema de la conversión entre códigos, diseñaremos, con los procedimientos adecuados, los circuitos lógicos que realizan la conversión.

7. Códigos decimales codificados en binario (BCD)

Para que la información procesada por cualquier sistema digital, pueda ser interpretada con mayor facilidad, es preferible, finalmente, convertirla al sistema decimal; ésta es la principal razón de la existencia de los códigos decimales codificados en binario (BCD), estos códigos tienen alguna de las características del sistema de numeración binaria y decimal.

El código BCD es un sistema de representación de dígitos decimales de 0 al 9 con un código binario de 4 bits, por lo tanto, de las 16 (24) posibles combinaciones en los códigos BCD solamente se utilizan 10.

Los códigos BCD se pueden clasificar en dos categorías principales.

Códigos BCD Ponderados

Códigos BCD no Ponderados

Los códigos BCD ponderados son aquellos en los que a cada posición, o cifra binaria, se le asigna un determinado peso, y el número decimal equivalente a una combinación binaria, se

Page 21: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-21

obtiene sumando los productos de los dígitos binarios (0 ó 1), con sus pesos posicionales, así un número decimal del 0 al 9 se representará por:

3 iii=0

N= x p∑

Donde: xi puede tomar los valores 0 ó 1

pi es el peso de la posición i.

Los códigos BCD ponderados más importantes son:

8421; 7421; 5421; 5311; 441-2

Estos serán detallados en la tabla de la figura 2.9

Número decimal

Códigos binario decimal (BCD) 8 4 2 1 7 4 2 1 5 4 2 1 5 3 1 1 4 4 1-2

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 2 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 1 3 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 0 0 1 1 1 4 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 5 0 1 0 1 0 1 0 1 1 0 0 0 1 0 0 0 1 0 1 0 6 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 1 1 0 1 7 0 1 1 1 1 0 0 0 1 0 1 0 1 0 1 1 1 1 1 1 8 1 0 0 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1 0 0 9 1 0 0 1 1 0 1 0 1 1 0 0 1 1 0 1 1 1 1 0

Figura 2.9 Tabla comparativa de los códigos binario decimal BCD.

También existen códigos BCD ponderados y no ponderados que además cumplen la condición de ser autocomplementarios. En los códigos no ponderados los dígitos binarios no tienen peso posicional; el más utilizado es el código exceso de tres (Ex-3). En este código BCD cada número decimal N se codifica mediante la combinación que le corresponde a N+3 y posee la propiedad de ser autocomplementario como el código Aiken, la tabla de la figura 2.10 resume estos códigos.

Los códigos BCD autocomplementarios más importantes son: 5211, 2421 de Aiken, el 84-2-1, 631-1 y el EX-3. Un código es autocomplementario cuando la combinación correspondiente al complemento a 9 de N, es decir 9-N se obtiene invirtiendo la combinación correspondiente a N o sea cambiando los ceros por unos y viceversa, en efecto el número 3 en el código 2421 se codifica con la combinación 0011 y el 6(9-3) con el código 1100 .

Page 22: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-22

Número decimal

Códigos binario decimal (BCD) autocomplementario5 2 1 1 2 4 2 1 8 4-2-1 6 3 1-1 Exeso 3

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 1 0 0 0 1 0 1 1 1 0 0 1 0 0 1 0 0 2 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 1 0 1 3 0 1 1 0 0 0 1 1 0 1 0 1 0 1 0 0 0 1 1 0 4 0 1 1 1 0 1 0 0 0 1 0 0 0 1 1 1 0 1 1 1 5 1 0 0 0 1 0 1 1 1 0 1 1 1 0 0 0 1 0 0 0 6 1 0 0 1 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 7 1 0 1 1 1 1 0 1 1 0 0 1 1 0 1 0 1 0 1 0 8 1 1 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0

Figura 2.10 Tabla comparativa de los códigos binario decimal BCD autocomplementario.

La conversión de un número decimal a un código BCD se realiza simplemente expresando cada dígito mediante la combinación binaria que le corresponde en el respectivo código BCD. Como ejemplo representaremos el número decimal 74810 en los códigos BCD natural, exceso de 3 y Aiken.

BCD natural (binario decimal) 0111 0100 1000=74810 BCD exceso de 3 1010 0111 1011=74810 BCD Aiken 1101 0100 1110=74810

La conversión de los códigos BCD a decimal se procede en forma inversa, es decir cada 4 bits se convierten a su equivalente en decimal.

La conversión del código binario natural a BCD no es directa, primero se debe ejecutar una conversión intermedia a decimal luego a BCD, para la conversión de BCD a binario natural, la operación es inversa, es decir primero se convierte de BCD a decimal y luego a binario natural.

8. Código cíclico de 5 bits

Otro código continuo y cíclico es el progresivo Johnson representado en la figura 2.11. Para combinaciones de 5 bits la capacidad de codificación de un código Johnson de n posiciones binarias es de 2n cantidades diferentes, por ejemplo con 5 bits solo se pueden representar los números del 0 al 9, dado que 2n=2.5=10 símbolos, éste código no es utilizado en sistemas digitales complejos por implicar una mayor complejidad de los mismos, pero sí se los utiliza en el diseño de contadores en anillo y numerosos sistemas de control digital. Así también se puede generar en el código Johnson de menos y más de 5 bits con la filosofía de 2n.

Page 23: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-23

Dígito Decimal

Código Johnson

0 0 0 0 0 0 1 0 0 0 0 1 2 0 0 0 1 1 3 0 0 1 1 1 4 0 1 1 1 1 5 1 1 1 1 1 6 1 1 1 1 0 7 1 1 1 0 0 8 1 1 0 0 0 9 1 0 0 0 0

Figura 2.11 Código progresivo Johnson.

9. Otros códigos numéricos

Otros códigos utilizados en distintos sistemas digitales son el código 2 de 5 que es un código no ponderado formado por 5 bits y el código biquinario que es un código ponderado, la particularidad de estos códigos es que cada combinación que representa un número diferente solo tiene dos unos tal como se ilustra en la figura 2.12, a estos códigos también se los denomina de peso constante por tener en cada combinación dos bits en estado 1 lógico.

Dígito Decimal

Código 2 en 5

Biquinario 5 0 4 3 2 1 0

0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 1 0 2 0 0 1 1 0 0 1 0 0 1 0 0 3 0 1 0 0 1 0 1 0 1 0 0 0 4 0 1 0 1 0 0 1 1 0 0 0 0 5 0 1 1 0 0 1 0 0 0 0 0 1 6 1 0 0 0 1 1 0 0 0 0 1 0 7 1 0 0 1 0 1 0 0 0 1 0 0 8 1 0 1 0 0 1 0 0 1 0 0 0 9 1 1 0 0 0 1 0 1 0 0 0 0

Figura 2.12 Código 2 en 5 y biquinario.

10. Códigos alfanuméricos

Un procesador es capaz de manejar información numérica, pero muchos sistemas digitales como sistemas de control, procesamiento de datos, computadoras, etc. deben ser capaces de reconocer códigos que representen números, letras y caracteres especiales, a estos se los denomina códigos alfanuméricos. Un juego completo y adecuado de caracteres debe incluir necesariamente:

1. 26 caracteres para letras minúsculas. 2. 26 caracteres para letras mayúsculas.

Page 24: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-24

3. 10 caracteres para los 10 símbolos numéricos. 4. 25 caracteres ó más para representar símbolos especiales y otros.

Totalizando 87 caracteres, para la representación de éstos caracteres con códigos binarios se requiere por lo menos 7 bits, con los que se pueden representar 27=128 posibles combinaciones o caracteres, de los cuales se utilizan 87 combinaciones de 0s y 1s de 7 bits representando a números, letras y símbolos. Los códigos alfanuméricos más comúnmente utilizados son: el BAUDOT y el código estándar americano para el intercambio de información ASCII (American Standard Code For Information Interchange).

10.1 El código Baudot

Este código fue utilizado en equipos electrónicos antiguos en relación con muchos periféricos y sistemas de transmisión de datos. Es un código de 5 bits, por lo tanto puede representar a 25=32 combinaciones que corresponden a caracteres diferentes; actualmente este código ha sido desechado y reemplazado por el código ASCII de 7 bits

10.2 El código ASCII

Este código es una forma especial de código binario que es bastante utilizado en los procesadores de datos y en los sistemas de comunicación. El ASCII es un código binario de 6 bits dando un total de 26=64 combinaciones que representan caracteres diferentes los mismos que comprenden a los números decimales del 0 al 9, letras mayúsculas y/ó minúsculas del alfabeto, más otros caracteres especiales utilizados para la puntuación y el control de los datos.

También se utiliza un código de 7 bits denominado ASCII completo o ASCII extendido USASCII, en este caso se pueden representar 27=128 combinaciones que representan caracteres diferentes. El código ASCII de 7 bits para cada número, letra o función de control está realizado en grupos de 3 y 4 bits, (en el caso del ASCII de 6 bits los grupos son de 2 y 4 bits); en la figura 2.13 se muestra el formato de palabras en el código ASCII de 7 bits.

MSB Grupo de 4 bits 7 6 5 4 3 2 1

Grupo de 3 bits LSB

Figura 2.13 Formato de palabra en el código ASCII.

En las figuras 2.14 y 2.15 se muestran los códigos ASCII de 6 y 7 bits respectivamente, para determinar el código correspondiente a una letra, número o signo se debe buscar la intersección de la fila y columna correspondiente.

Page 25: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-25

Columna 0 1 2 3 Fila Bits 6 5

4 3 2 1 0 0 6 5

0 1 6 5

1 0 6 5

1 1 6 5

0 0 0 0 0 @ P ç 0 1 0 0 0 1 A Q ! 1 2 0 0 1 0 B R " 2 3 0 0 1 1 C S # 3 4 0 1 0 0 D T $ 4 5 0 1 0 1 E U % 5 6 0 1 1 0 F V & 6 7 0 1 1 1 G W ´ 7 8 1 0 0 0 H X ( 8 9 1 0 0 1 I Y ) 9

10 1 0 1 0 J Z * : 11 1 0 1 1 K [ + ; 12 1 1 0 0 L \ ´' < 13 1 1 0 1 M ] - = 14 1 1 1 0 N - . > 15 1 1 1 1 O ¬ / ?

Figura 2.14 Código ASCII de 6 bits.

Columna 0 1 2 3 4 5 6 7 Fila Bits 765 0 0 0

7 6 5 0 0 1 7 6 5

0 1 0 7 6 5

0 1 1 7 6 5

1 0 0 7 6 5

1 0 1 7 6 5

1 1 0 7 6 5

1 1 1 7 6 5 4 3 2 1

0 0 0 0 0 NUL DLE SP 0 @ P ` p 1 0 0 0 1 SOH DC1 ! 1 A Q a q 2 0 0 1 0 STX DC2 " 2 B R b r 3 0 0 1 1 ETX DC3 # 3 C S c s 4 0 1 0 0 EOT DC4 $ 4 D T d t 5 0 1 0 1 ENQ NAK % 5 E U e u 6 0 1 1 0 ACK SYN & 6 F V f v 7 0 1 1 1 BEL ETB ´ 7 G W g w 8 1 0 0 0 BS CAN ( 8 H X h x 9 1 0 0 1 HT EM ) 9 I Y i y

10 1 0 1 0 LF SUB * : J Z j z 11 1 0 1 1 VT ESC + ; K [ k { 12 1 1 0 0 FF FS 0 < L \ l | 13 1 1 0 1 CR GS - = M ] m } 14 1 1 1 0 S0 RS . > N ^ n 15 1 1 1 1 S1 US / ? O - o DEL

Figura 2.15 Código ASCII de 7 bits.

11. Código detector de error

Page 26: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-26

En la transmisión de datos binarios de una localización a otra remota es posible que se produzcan errores debido a la presencia de ruido en el proceso ó interferencias en la línea de transmisión, recepción ó porque el trabajo de alguno de los componentes no es el correcto.

Si un código binario utiliza todas las combinaciones posibles (2n) es imposible la detección de un error cuando ocurre en alguna de las combinaciones, ya que una combinación del código se transforma en otra que también pertenece al mismo. Por consiguiente la detección de errores en un código binario se logra utilizando solo parte de las combinaciones posibles, pero esta condición aunque necesaria no es suficiente para que el código permita detectar errores.

Por ejemplo el código BCD natural (8421) solo utiliza 10 combinaciones de las 16 posibles que se generan con 4 bits; si por ejemplo ocurre un error en un bit en la combinación 0110 y se convierte en la combinación 0100, ó en 0010 ó en la 0111 la detección del error no es posible, porque las cuatro combinaciones pertenecen al mismo código.

Para establecer la condición necesaria y suficiente para que un código binario permita detectar errores, definiremos el concepto de distancia mínima de un código. La distancia mínima entre dos combinaciones binarias viene dada por el número de bits que deben modificarse en una de ellas para obtener la otra combinación.

La distancia mínima en un código se define como, la menor distancia entre dos combinaciones binarias cualesquiera, que perteneciendo al mismo código, expresa el numero de bits en que difieren dos combinaciones sucesivas, que representan a números, letras o símbolos, el valor de la distancia mínima de los códigos estudiados hasta el momento es la unidad, por lo tanto un error en uno solo de los bits de un número binario en cualquiera de los códigos puede convertirse en otro número perteneciente al mismo código haciendo que el error no sea detectable.

De todo lo mencionado se deduce que, para poder detectar errores en un código, su distancia mínima debe ser mayor a la unidad.

Existen diversos métodos para la detección de errores, entre los que podemos mencionar:

Método del bit de paridad

Método del peso constante

11.1 El bit de paridad

El método de bit de paridad se obtiene añadiendo un bit extra a cada combinación de un código en el que se quiere detectar un error, el bit de paridad puede ser 0 ó 1 dependiendo del número de unos que contiene cada combinación del código, para completarlo a un numero par o impar de unos, por lo tanto se utilizan dos procedimientos:

El bit de paridad par

El bit de paridad impar

En el método del bit de paridad par el valor del bit de paridad depende del número total de unos en cada combinación del código, si el número de unos es impar el bit de paridad toma el

Page 27: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-27

valor de 1 para que el número total de unos incluyendo el bit de paridad sea par, si por el contrario el número de unos es par, el bit de paridad toma el valor de 0, para que el número total de unos incluido el bit de paridad sea par.

En el método del bit de paridad impar la utilización de este bit es similar que en el caso anterior, salvo que en este el número total de unos incluido el bit de paridad debe ser impar.

Estos métodos son utilizados para los códigos numéricos y alfanuméricos estudiados en este capítulo, en la figura 2.16 se muestra un ejemplo.

Dígito decimal

Código BCD natural

Bit de paridad par

Bit de paridad impar

0 0 0 0 0 0 1 1 0 0 0 1 1 0 2 0 0 1 0 1 0 3 0 0 1 1 0 1 4 0 1 0 0 1 0 5 0 1 0 1 0 1 6 0 1 1 0 0 1 7 0 1 1 1 1 0 8 1 0 0 0 1 0 9 1 0 0 1 0 1

Figura 2.16 Código decimal codificado en binario exceso de 3 con bit de paridad.

Los circuitos que generan y detectan los bits de paridad serán analizados más adelante. Como vimos la detección de errores con estos métodos consiste en la comprobación de si el número de unos es par o impar; de otra forma se puede concluir que con el agregado del bit de paridad se incrementa la distancia mínima del código permitiendo así la detección de errores de un solo bit.

Para poder detectar errores de más de un bit es necesaria la utilización de un código de distancia mínima superior a dos; en general el número de bits erróneos que se pueden detectar será igual al número en que la distancia mínima es superior a la unidad.

11.2 Peso constante ó fijo

El método de peso constante ó fijo se basa en el principio de mantener el número de unos igual para todas las combinaciones del código, por ejemplo como en los códigos representados en la tabla de la figura 2.12 (2 en 5 y biquinario) poseen solamente dos unos lógicos, y la distancia mínima de estos códigos es 2 por lo que pueden detectar errores mediante un circuito denominado detector de paridad.

12. Código corrector de error

Page 28: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-28

Los códigos correctores de error, no solo indican la existencia de un error como los vistos en los apartados anteriores sino que proporcionan información de cuál es el bit o los bits erróneos y por consiguiente, permiten su corrección invirtiendo simplemente el respectivo bit.

Estos códigos son utilizados solamente en la transmisión de información especialmente cuando no hay posibilidades de repetición lo que generalmente sucede en los sistemas digitales que trabajan en tiempo real, por ejemplo en aquellos que interactúan en los procesos industriales y a partir de los valores de ciertas variables del proceso se obtienen los códigos.

Los códigos de distancia mínima dos no permiten la corrección de errores, dado que al producirse un error la combinación obtenida posee como mínimo dos adyacencias pertenecientes al código y no es posible discernir de cuál de las dos procede; por ejemplo en el código de la figura 2.16 utilizando el método de bit de paridad par, y este bit ubicado a la izquierda del código, si se detecta la combinación errónea 00100 es imposible conocer si el error se ha producido en el primer bit y la combinación correcta es 00101 ó en el segundo y la combinación correcta es 00110 ó finalmente el error está en el bit de paridad y la combinación correcta es 10100.

Por lo tanto, para poder corregir errores la distancia mínima del código deberá ser superior a dos. Si la distancia mínima de un código es 3 la combinación obtenida por error en un bit, es adyacente a una sola combinación del código y es posible conocer cuál es el bit erróneo. Así un código de distancia mínima 3 permite detectar errores de dos bits o corregir errores de un bit.

En general la distancia mínima de un código que permita la corrección de errores de m bits tendrá que ser dn=2m+1 donde m es el número de bits a corregir.

Nos limitaremos a estudiar el código corrector de un bit (m=1) cuya distancia mínima es de 3 y entre ellos los de mayor difusión son los códigos de Hamming.

En 1950 Richard Hamming publico la descripción de la metodología de una clase de códigos para la detección y corrección de errores.

Los códigos de Hamming se basan en la adición de p bits a un código de distancia mínima uno de n bits como los estudiados en este capítulo, obteniéndose un nuevo código de n+p bits. En este código se realizan p detecciones de paridad en bits seleccionados del mismo, obteniéndose un bit de paridad 1 ó 0 según el número de bits en 1 sea par o impar.

El conjunto de los p bits de paridad forma un número en el sistema binario natural cuyo equivalente decimal nos indica la posición del bit erróneo, en caso de no existir error dicho número deberá ser 0. El número p de bits añadidos deberá ser suficiente para permitir la detección de error y la ausencia de error en las n+p posiciones, dado que con p bits se obtienen 2p combinaciones se deberá cumplir la relación 2p≥n+p+1.

Como ejemplo realizaremos el código Hamming obtenido a partir del código decimal codificado en código binario natural (BCD). En este código n=4 y por lo tanto el número de bits que se deben añadir será de p=3 dado que 23=4+3+1. Para detectar los 7 posibles errores de un bit en cada una de las posiciones ó la ausencia de error, son necesarias 8 combinaciones binarias que denominaremos correctoras de error.

Page 29: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-29

Dichas combinaciones se obtienen con 3 bits C1, C2, y C3; el número decimal equivalente al binario formado por ellos indicará la posición del bit erróneo. En resumen para la corrección de un error se sabe que el código de 4 bits (n=4) se transforma con los 3 bits añadidos (p=3) en un código de 7 bits, lo que nos resta es definir de estos 7 bits cuáles pertenecen al código de origen y cuáles son los bits añadidos.

Veremos ahora la forma de generar cada uno de los bits de la combinación correctora de errores, como recordaremos de las funciones básicas de dos variables la función OR-Ex representa la paridad impar en una combinación de dos bits, ó la función NOR-Ex representa la paridad par en una combinación de dos bits, como se debe realizar p detecciones de paridad en bits seleccionados; en la figura 2.17 se representan todas las combinaciones de los bits C1, C2, y C3.

Nº Decimal equivalente

C3 C2 C1

b0 0 0 0 b1 0 0 1 b2 0 1 0 b3 0 1 1 b4 1 0 0 b5 1 0 1 b6 1 1 0 b7 1 1 1

Figura 2.17 Combinaciones de los bits C1, C2, y C3.

El bit C1 tomará el valor de 1 si se produce un error en los bits b1, b3, b5 y b7 de la combinación del código. Si el número de unos existentes en esas cuatro posiciones son siempre par un error en cualquiera de esos cuatro bits lo convierte en impar. Por lo tanto C1 tomará el valor de 1 si el número de unos en las posiciones b1, b3, b5 y b7 es impar y 0 en caso contrario. Tomando en cuenta que la función OR-Ex cuyo valor lógico es uno en las condiciones especificadas luego algebraicamente queda:

C1=b1⊕b3⊕b5⊕b7

De igual forma se deduce que la ecuación lógica de C2 y C3 se obtiene por medio de las expresiones (detalladas a continuación) para lo que se debe cumplir la condición que el número de unos debe ser par en las combinaciones de b2, b3, b6, b7 y b4, b5, b6, b7

C2=b2⊕b3⊕b6⊕b7

C3=b4⊕b5⊕b6⊕b7

Para lograr estas condiciones se deben generar adecuadamente los tres bits que se añaden a los cuatro de la combinación binaria del código. Dado que b1, b2, y b4 solo aparecen en una expresión cada uno los elegiremos como bits añadidos a la combinación binaria formada por b3, b5, b6, y b7. El bit b1 valdrá 1 si el número de unos de b3, b5, y b7 es impar y 0 en caso contrario; por lo tanto:

b1=b3⊕b5⊕b7

Page 30: Sistemas de numeración y códigos

CAPITULO II SISTEMAS DE NUMERACION Y CODIGOS

SISTEMAS DIGITALES I (R.O.C./H.M.L.) CAP. 2-30

De igual forma, b2 y b4 se obtendrán de la siguiente manera:

b2=b3⊕b6⊕b7

b4=b5⊕b6⊕b7

De la deducción realizada se determinó que los p bits añadidos son los b1, b2, y b4 lo que significa que los n bits del código de origen son b3, b5, b6 y b7, con lo que se deduce el código de Hamming mostrado en la figura 2.18

Nº Decimal equivalente

b7 b6 b5 b4 b3 b2 b1

0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 2 0 0 1 1 0 0 1 3 0 0 1 1 1 1 0 4 0 1 0 1 0 1 0 5 0 1 0 1 1 0 1 6 0 1 1 0 0 1 1 7 0 1 1 0 1 0 0 8 1 0 0 1 0 1 1 9 1 0 0 1 1 0 0

Figura 2.18 Código de Hamming.

Ejemplo: comprobaremos la detección de un error en el bit b5 de la combinación 0011001 correspondiente al número decimal 2, la combinación errónea es 0001001.

Para la detección comprobemos los valores de C1, C2, y C3

C1 = b1⊕b3⊕b5⊕b7 = 1⊕0⊕0⊕0 = 1

C2 = b2⊕b3⊕b5⊕b7 = 0⊕0⊕0⊕0 = 0

C3 = b4⊕b3⊕b5⊕b7 = 1⊕0⊕0⊕0 = 1

En efecto, la combinación C3, C2, y C1 es 101 equivalente al número decimal 5. Estableciéndose que el error se encuentra en el bit 5, por lo que habrá que cambiar en la posición del bit 5 el 0 por el 1 para obtener el código correcto.

Del análisis y del ejemplo anterior podemos concluir:

b1 se selecciona de modo que se establezca la paridad par en los bits b3, b5, y b7.

b2 se selecciona de modo que se establezca la paridad par en los bits b3, b6, y b7.

b4 se selecciona de modo que se establezca la paridad par en los bits b5, b6, y b7.

Para determinar el bit erróneo se procede comparando la paridad impar en las mismas tres combinaciones de bits, para los cuales se estableció la paridad par, esto se hace con las ecuaciones de C1, C2, y C3 respectivamente.