Descargar

Fundamentos matemáticos de la electrónica digital (página 2)


Partes: 1, 2

edu.red

Conversión de un sistema a otro

  • Consideraciones preliminares:

En general, la conversión entre dos bases no puede hacerse por simple sustitución; se requieren operaciones aritméticas. Aquí enunciaremos una regla para convertir un número en cualquier base a un número en base 10, y viceversa.

– De base r a base 10:

Partimos del hecho conocido de que el valor de un número en cualquier base esta dado por la formula:

edu.red

Donde r es la base del sistema en el cual se halla el número y existen n dígitos a la izquierda del punto base y p dígitos a la derecha. De esta forma, el valor del numero puede encontrarse al convertir cada digito del numero a su equivalente en base 10, y expandir la formula utilizando aritmética de base 10. Escribimos la formula de expansión de manera anidada:

edu.red

Esto es, comenzamos con una suma de 0; iniciando con el digito que esta en el extremo izquierdo, multiplicamos la suma por r, y agregamos el siguiente digito a la suma, repitiendo este proceso hasta que todos los dígitos hayan sido procesados.

– De base 10 a base r:

Ahora, partimos de la formula anterior para fundamentar un método para convertir de un numero en base 10 a cualquier base. Para esto, consideremos ¿que ocurre si dividimos la formula entre r? Puesto que la parte entre paréntesis de la formula es igualmente divisible entre r, el cociente será:

edu.red

Y el residuo será d0. De este modo, d0 puede calcularse como el residuo de la división larga de N entre r. Adicionalmente, el cociente Q tiene la misma forma que la formula original; por lo tanto, divisiones sucesivas entre r nos proporcionan dígitos sucesivos de N de derecha a izquierda, hasta que todos los dígitos de N hayan sido derivados.

  • Conversión de Binario a.

– Octal:

Se hace a través de una sustitución directa. Desde el punto binario, se separa el número binario en grupos de 3 bits, que se reemplazan por su correspondiente digito octal.

Ejemplo:

edu.red

– Hexadecimal:

Se hace a través de una sustitución directa. Desde el punto binario, se separa el número binario en grupos de 4 bits, que se reemplazan por su correspondiente digito hexadecimal.

Ejemplo:

edu.red

– Decimal:

Se hace a través de la suma, convirtiendo cada digito del número a su equivalente en base 10 de acuerdo a la posición que ocupa, y luego sumándolos.

Ejemplo:

edu.red

  • Conversión de Octal a.

– Binario:

Se hace a través de una sustitución directa, reemplazándose cada digito octal por su equivalente grupo de 3 bits.

Ejemplo:

edu.red

– Hexadecimal:

Se convierte primero el número octal a binario, reemplazándose cada digito octal por su correspondiente grupo de 3 bits. Luego, a partir del punto binario, se separa el número binario en grupos de 4 bits, que se reemplazan por su correspondiente digito hexadecimal.

Ejemplo:

edu.red

– Decimal:

Se hace a través de la suma, convirtiendo cada digito del número a su equivalente en base 10 de acuerdo a la posición que ocupa, y luego sumándolos.

Ejemplo:

edu.red

  • Conversión de Hexadecimal a.

– Binario:

Se hace a través de una sustitución directa, reemplazándose cada digito hexadecimal por su equivalente grupo de 4 bits.

Ejemplo:

edu.red

– Octal:

Se convierte primero el número hexadecimal a binario, reemplazándose cada digito hexadecimal por su correspondiente grupo de 4 bits. Luego, a partir del punto binario, se separa el número binario en grupos de 3 bits, que se reemplazan por su correspondiente digito octal.

Ejemplo:

edu.red

– Decimal:

Se hace a través de la suma, convirtiendo cada digito del número a su equivalente en base 10 de acuerdo a la posición que ocupa, y luego sumándolos.

Ejemplo:

edu.red

  • Conversión de Decimal a.

– Binario:

Se hace a través de la división.

Ejemplo:

edu.red

– Octal:

Se hace a través de la división.

Ejemplo:

edu.red

– Hexadecimal:

Se hace a través de la división.

Ejemplo:

edu.red

REGLA PRÁCTICA:

  • 1) Dividir por el valor decimal de la base el número decimal a convertir, así como los sucesivos cocientes, hasta obtener un cociente menor al valor de la base.

  • 2) Este último cociente y los restos de las divisiones efectuadas constituyen, en ese orden, el número buscado.

Operaciones con números binarios

  • Suma de números binarios:

La siguiente es una tabla de sumar para números binarios:

edu.red

Para sumar dos números binarios X y Y, sumamos juntos los bits menos significativos, con un acarreo inicial de 0, produciendo bits de suma y bits de acarreo. Continuamos procesando bits de derecha a izquierda, sumando el acarreo (si lo hubiere) fuera de cada columna a la suma de la siguiente columna.

Ejemplo:

edu.red

  • Resta de números binarios:

La siguiente es una tabla de restar para números binarios:

edu.red

La resta binaria se realiza de manera similar a la suma, pero empleando acarreos negativos ("prestamos") desde una columna a la columna anterior cuando el minuendo de esa columna sea un 0 y el sustraendo sea un 1. Para restar dos números binarios X y Y, restamos juntos los bits menos significativos con un préstamo inicial de 0, produciendo bits de resta y bits de préstamo. Continuamos procesando bits de derecha a izquierda, restando el bit de préstamo (si lo hubiere) a la siguiente columna.

Los valores del minuendo binario se modificaran cuando se presente el préstamo. Cada vez que se pide un 1 a la siguiente posición del minuendo, este pasara a ser 0. En el caso de que la siguiente también sea 0, pasara a ser 1, debiéndose pedir nuevamente un 1 a la subsiguiente posición, que también pasara a ser 1 si es 0, y así, sucesivamente, si hay 0 en el minuendo se transformaran en 1 hasta llegar a un 1 que pasara a ser 0.

Ejemplo:

edu.red

  • Multiplicación, división y potenciación de números binarios:

La siguiente es la tabla de multiplicar para números binarios:

edu.red

Multiplicar en binario es muy sencillo: se repite el multiplicando desplazado a la izquierda, conforme a la posición que ocupen los unos del multiplicador. Luego se realiza la suma con los sumandos así ordenados.

Ejemplo:

edu.red

La división se puede realizar con el método de las diferencias sucesivas, siendo que cada sustraendo se obtiene multiplicando por 1 al divisor si este ultimo es menor o igual que el resto parcial en cuestión, o por 0 si el mismo es mayor que dicho resto.

Ejemplo:

edu.red

Es importante señalar que cada vez que se multiplica o se divide un número entero binario por la base 102=210, se agrega o se quita un cero, respectivamente.

Con respecto a la potenciación, en cualquier base, siempre que se tengan p factores iguales de un numero n, se podrá escribir nxnxnx.xn=np. Según sea la base, variará la representación de n y p.

Debe tenerse presente que en cualquier base, la unidad seguida de p ceros puede expresarse como la base a la potencia p, simbolizándose 10 la base en todos los sistemas numéricos.

Ejemplo:

edu.red

1.2)

Códigos

Se entiende por código una representación univoca de las cantidades, de tal forma que a cada una de estas se asigna una combinación de símbolos determinados, y viceversa.

  • Códigos binarios:

El sistema binario recibe el nombre de "código binario natural". Con n cifras binarias o bits se pueden obtener 2n combinaciones diferentes. Cada combinación de estas se puede asignar a una cantidad diferente. Por ello, el número de asignaciones posible es el de permutaciones de las 2n combinaciones, es decir, 2n!, que constituyen otros tantos códigos binarios.

Un código binario es continuo si las combinaciones correspondientes a números decima-les consecutivos son adyacentes. Se denominan combinaciones binarias adyacentes aquellas que difieren solamente en un bit.

Un código binario es cíclico si la última combinación es adyacente a la primera.

  • Código Gray:

Es un código binario cíclico no ponderado diseñado para reducir la probabilidad de que un sistema malinterprete una entrada cambiante, ya que solo 1 bit cambia entre cada par de palabras de código sucesivas.

Existen dos maneras convenientes de construir un código Gray con cualquier número deseado de bits. El primer método esta basado en el hecho de que el código Gray es un "código reflejado"; puede ser definido y construido de manera recursiva, empleando las siguientes reglas:

  • 1. Un código Gray de 1 bit tiene dos palabras de código, 0 y 1.

  • 2. Las primeras 2n-1 palabras de código de un código Gray de n bits son iguales a las palabras de código de un código Gray de n-1 bits, escritas en orden con un 0 agregado en su extremo izquierdo.

  • 3. Las ultimas 2n-1 palabras de código de un código Gray de n bits son iguales a las palabras de código de un código Gray de n-1 bits, pero escritas en orden inverso y con un 1 agregado en su extremo izquierdo.

El segundo método nos permite derivar una palabra de código Gray de n bits directamente de la correspondiente palabra de un código binario natural de n bits.

  • 1. Los bits de una palabra de código binaria de n bits o código Gray se enumeran de derecha a izquierda, desde 0 hasta n-1.

  • 2. El bit i de una palabra de código de código Gray es 0 si los bits i e i+1 de la correspondiente palabra de código binario son iguales; sino, el bit i es 1 (cuando i+1=n, el bit n de la palabra de código binario se considera que es 0).

edu.red

  • Códigos alfanuméricos:

Son códigos no ponderados que permiten representar, aparte de información numérica, información alfabética y algunos signos especiales (caracteres imprimibles), como así también caracteres de control del sistema, que pueden emplearse para controlar una acción, para señalar una condición, o para representar el estado actual del hardware (caracteres no imprimibles).

El código alfanumérico más utilizado es el código ASCII (American Standar Code for Information Interchange), que representa cada carácter con una cadena de 7 bits y produce un total de 27=128 caracteres diferentes, los cuales se indican en la siguiente tabla:

edu.red

Los códigos de control que aparecen en la tabla del código ASCII se describen en la siguiente tabla:

edu.red

  • Códigos BCD:

En los códigos BCD, cada número decimal se codifica directamente en un código binario. Para representar los diez dígitos, del 0 al 9, se necesitan 4 bits, porque con 3 bits se podrían codifican solamente 23=8 dígitos, del 0 al 7. Por lo tanto, de las 24=16 combina- ciones posibles con cuatro bits, en los códigos BCD solo se emplean diez. Esto hace que el número de bits necesarios para representar una cantidad en un código BCD sea superior al del código binario natural.

Los códigos BCD se pueden clasificar en dos categorías principales: códigos ponderados y códigos no ponderados.

Los códigos BCD ponderados son aquellos en los que a cada posición o cifra binaria se le asigna un peso, y el número decimal equivalente a una combinación binaria se obtiene sumando los pesos de las posiciones que poseen el valor 1. Los códigos BCD ponderados más empleados son el código "BCD Natural", que es un código binario cuyos 4 bits tienen asignados los pesos 8, 4, 2 y 1 (por esta razón, también se lo llama código 8421), y el código "BCD Aiken", que es un código cuyos 4 bits tienen asignados los pesos 2, 4, 2 y 1 (por esta razón, también se lo llama código 2421); una ventaja de este ultimo código es que es un código "autocomplementado", es decir, que para cualquier numero N, puede obtenerse la combinación correspondiente de su complemento a 9 (9-N), simplemente invirtiendo la combinación correspondiente a N, cambiando los 1 por 0 y viceversa.

edu.red

Los códigos no ponderados son aquellos en los que cada posición binaria no tiene asignado un peso determinado, aunque generalmente siguen reglas para su construc-ción. Los códigos BCD no ponderados mas utilizados son el código "BCD Exceso 3", donde la combinación para cada digito decimal es la correspondiente combinación del código BCD Natural más 00112; el código "BCD Biquinario", cuya combinación contiene 7 bits, donde los primeros 2 bits indican si el número se encuentra en el intervalo 0-4 (01) o en el intervalo 5-9 (10), mientras que los últimos 5 bits indican cual de los cinco números en el intervalo seleccionado esta representado; y el código "BCD 1 de 10", donde se emplean 10 bits para representar los diez dígitos decimales, de forma tal que solo un bit de los diez valga 1, poniendo ese bit 1 en posiciones sucesivas partiendo del MSB y asignándole a cada combinación un número decimal, empezando por 0 y terminando en 9.

edu.red

Una ventaja potencial que se obtiene al utilizar más del número mínimo de bits en un código es la propiedad de detección de errores.

  • Código Johnson:

Es un código binario cíclico no ponderado, también llamado "código progresivo", cuya capacidad de codificación para un código de n bits es de 2n cantidades diferentes. Por eso, para representar los diez dígitos decimales, se necesitan 5 bits. La ley de formación establece que partiendo de todos los bits en 0, progresa un 1 de derecha a izquierda hasta completar todas las posiciones, y luego progresa un 0 hasta alcanzar nuevamente la condición inicial. Este código no se emplea en sistemas digitales complejos, dado que la máxima capacidad de codificación con n bits es 2n, evidentemente superior a la del código Johnson.

edu.red

Definiciones:

– Capacidad de codificación: es la cantidad de combinaciones que constituyen el código en relación a su ley de formación y a la cantidad de posiciones binarias con las que sea definido.

– Distancia: es la cantidad de bits que deben modificarse en un código binario para pasar de una combinación a otra que también pertenezca al código. En base a esta definición, la distancia mínima será la menor distancia entre cualquier par de combinaciones pertenecientes al código.

  • Cubos n y distancia:

Los cubos n se emplean para visualizar geométricamente cadenas de n bits. Un cubo n tiene 2n vértices, cada uno de los cuales se encuentra etiquetado con una cadena de n bits. Los bordes se dibujan de manera que cada vértice sea adyacente a otros n vértices cuyas etiquetas difieren del vértice dado solamente en un bit. Más allá de n=4, los cubos n son realmente difíciles de dibujar.

Para valores razonables de n, los cubos n hacen fácil la visualización de ciertos proble-mas de codificación y minimización de lógica.

edu.red

Los cubos también proporcionan una interpretación geométrica para el concepto de distancia, también llamado distancia de Hamming. Como vimos, la distancia entre dos cadenas de n bits es el numero de posiciones de bits en las cuales difieren. En términos de un cubo n, la distancia es la mínima longitud de una trayectoria entre los dos vértices correspondientes; evidentemente, dos vértices adyacentes tienen distancia 1 (que es la mínima distancia posible). El concepto de distancia se emplea en el diseño de códigos de detección y corrección de errores.

Un subcubo m de un cubo n es un conjunto de 2m vértices, en el cual n-m de los bits tienen el mismo valor en cada vértice, y los m bits restantes se hacen cargo de todas las combinaciones restantes 2m.

Ejemplo: los vértices (000, 010, 100, 110) forman un subcubo 2 del cubo 3. Este subcubo también puede indicarse mediante una cadena simple, "xx0", donde "x" indica que un bit en particular es del tipo "sin importancia"; cualquier vértice cuyos bits coincidan en las posiciones "no x" pertenece a este subcubo.

  • Códigos para detectar y corregir errores:

Un error en un sistema digital es la alteración de datos a partir de su valor correcto a algún otro valor. Un error es causado por una falla física, que puede ser temporal o permanente.

Los efectos que tienen las fallas en los datos se predicen mediante modelos de error; el más sencillo es el "modelo de error independiente". Este modelo supone que una falla solamente afecta a un bit de datos; esto es, los datos corrompidos solamente contienen un error (error simple). Varias fallas pueden ocasionar errores múltiples (error múltiple), pero se supone que es menos probable.

  • Códigos de detección de error:

Un código de detección de error tiene la propiedad de que la corrupción de una palabra de código probablemente producirá una cadena de bits que no sea una palabra de código (una palabra de no-código).

Un sistema que utiliza un código de detección de error genera, transmite y almacena solamente palabras de código. De este modo, los errores en una cadena de bits pueden detectarse mediante una regla simple: si la cadena de bits es una palabra de código, se supone que es correcta; si es una palabra de no-código, entonces contiene un error.

Un código de n bits y sus propiedades de detección de error bajo el modelo de error independiente se explican fácilmente en términos de un cubo n. Un código es simple-mente un subconjunto de los vértices del cubo n. A fin de que el código detecte todos los errores simples, ningún vértice de palabra de código puede estar adyacente a otro vértice de palabra de no-código.

edu.red

Ejemplo: un código de 3 bits con 4 palabras de código, es un código que tiene la propiedad de detección de errores simples; ningún error simple puede cambiar una palabra de código en otra, ya que todas las palabras de código difieren en más de un bit.

La capacidad de un código para detectar errores simples puede establecerse en términos del concepto de distancia: un código detecta todos los errores simples si la distancia minima entre todos los pares posibles de palabra de código es 2.

En general, necesitamos n+1 bits para construir un código de detección de errores simples con 2n palabras de código. Los primeros n bits de una palabra de código, llamados bits de información, pueden ser cualquiera de las 2n cadenas de n bits. Para obtener un código de distancia minima 2, agregamos un bit adicional, llamado bit de paridad, que se establece a 0 si hay un número par de unos entre los bits de información, y a 1 de otro modo. Así, obtenemos un código de paridad par, donde una palabra de código valida de n+1 bits tiene un número par de unos. También se puede construir un código de paridad impar, en el cual el número total de unos en una palabra de código valida de n+1 bits sea impar. Estos códigos también se denominan códigos de paridad de 1 bit, puesto que cada uno de ellos utiliza solo 1 bit de paridad.

edu.red

Los códigos de paridad de 1 bit no detectan errores de 2 bits, puesto que cambiar 2 bits no afecta la paridad. Sin embargo, los códigos pueden detectar errores en cualquier número impar de bits, pero prácticamente la capacidad de detección de errores de los códigos de paridad de 1 bit se detiene después de los errores de 1 bit.

  • Corrección de errores y códigos de detección de errores múltiples:

Al utilizar más de un bit de paridad, o bits de verificación, de acuerdo a algunas reglas bien elegidas, podemos crear un código cuya distancia minima sea mayor que 2.

Pero ¿cómo se emplea un código de este tipo para corregir errores simples o detectar errores múltiples? Para explicarlo, supongamos un código con una distancia minima de 3. En base a esto, vamos a tener al menos dos palabras de no-código entre cada par de palabras de código. Ahora supongamos que transmitimos palabras de código, y asumamos que las fallas afectan como máximo 1 bit de cada palabra de código recibida. Entonces, una palabra de no-código recibida con un error de 1 bit estará más cerca de la palabra de código que se transmitió originalmente que de cualquier otra palabra de código. Por consiguiente, cuando recibamos una palabra de no-código, podemos corregir el error cambiando la palabra de no-código a la palabra de código más cercana. La decisión que implica saber cual palabra de código se transmitió originalmente se conoce como decodificación, y el hardware que lo hace se llama decodificador de corrección de errores.

Un código que se utiliza para corregir errores se denomina código de corrección de errores. En general, si un código tiene una distancia minima de 2c+1, puede utilizarse para corregir errores que afecten hasta c bits (c=1 en el caso de los códigos correctores de errores de 1 bit). Si una distancia minima de código es de 2c+d+1, puede emplearse para corregir errores en hasta c bits y detectar errores en d bits adicionales.

  • Códigos de Hamming:

Los códigos de Hamming están basados en la adición de p bits de paridad a un código de distancia 1 de n bits de datos, obteniéndose un nuevo código de n+p bits. En este nuevo código se realizan p detecciones de paridad en bits de datos seleccionados del mismo, obteniéndose un bit de paridad 1 o 0 según el número de unos sea par o impar.

El número p de bits de paridad añadidos ha de ser suficiente para permitir la detección del error en las n+p posiciones. Dado que con p bits se obtienen 2p combinaciones, se ha de cumplir la relación 2pedu.redn+p+1.

El código final a transmitir estará compuesto por la suma de los bits de datos más los bits de paridad. Dentro del código de Hamming, los bits de paridad van ubicados, contando de derecha a izquierda, en las posiciones (en decimal) que son potencia de 2. Las posiciones restantes son ocupadas por los bits de datos.

El receptor del código de Hamming deberá realizar una serie de operaciones con los bits recibidos mediante ecuaciones preestablecidas para determinar si la palabra de código recibida tiene error y en cual bit, o si por el contrario, la palabra de código no tiene error.

Ejemplo: supongamos que deseamos transmitir los números decimales del 0 al 9 mediante el código BCD natural; puesto que empleamos 4 bits de datos (n=4), para confeccionar el código de Hamming se deberán agregar 3 bits de paridad (p=3), ya que 23=8edu.red4+3+1.

edu.red

edu.red

Para plantear las ecuaciones que permiten calcular el valor de los bits de paridad, cada bit de paridad es asociado a los bits de datos cuya posición, expresada en binario, tiene un 1 en la potencia de 2 en la que esta ubicada el bit de paridad, de acuerdo a la siguiente representación:

edu.red

Para cada palabra del código de datos se debe calcular el valor de cada uno de los bits de paridad, el cual es 0 si la cantidad de unos de los bits asociados es par, y es 1 si la cantidad de unos de los bits asociados es impar.

De lo anterior se deduce que el bit de paridad B0 esta asociado a los bits de datos D0, D1 y D3, el bit de paridad B1 esta asociado a los bits de datos D0, D2 y D3, y el bit de paridad B2 esta asociado a los bits de datos D1, D2 y D3, por medio de las siguientes ecuaciones:

edu.red

De esta manera, el código de Hamming para los dígitos decimales expresados en BCD natural es:

edu.red

Por la forma en que están elegidos los bits de paridad, es obvio que en la medida de que no ocurra un error en la transmisión de cada palabra de código de Hamming, las siguientes ecuaciones serán siempre iguales a cero:

edu.red

De producirse un error en la transmisión de cualquier bit de una palabra de código de Hamming, en las ecuaciones en las que aparece dicho bit el resultado será uno. El resultado de todas las ecuaciones va a formar un número binario que nos indicara la posición del bit con error.

Para mostrarlo, supongamos que trasmitimos el número (7) decimal codificado en código de Hamming (0110100), pero recibimos la palabra de código con error (0010100); de esta forma, tenemos que:

edu.red

Planteando las ecuaciones para el código recibido, tenemos que:

edu.red

Y de aquí podemos observar que el error se encuentra en el bit que ocupa la posición 1102, que corresponde efectivamente al bit D2. La corrección se realiza invirtiendo el bit erróneo (si es un 1, cambiarlo por un 0, y si es un 0, cambiarlo por un 1).

1.3)

Representación de números binarios signados

Básicamente, existen muchas formas de representar números signados, pero las dos mas empleadas son la representación de magnitud y signo, y los sistemas numéricos de complemento.

  • Representación de magnitud con signo:

El sistema de magnitud con signo se aplica a los números binarios haciendo uso de una posición de bit extra para representar el signo (bit de signo); tradicionalmente, el MSB de una cadena de bits es empleado como el bit de signo (0=signo más, 1=signo menos), y los bits de menor orden contienen la magnitud.

Ejemplos:

edu.red

El sistema de magnitud con signo tiene un número idéntico de enteros positivos y negativos. Un entero de magnitud con signo de n bits esta situado dentro del intervalo que va desde –(2n-1-1) hasta +(2n-1-1), y existen dos representaciones posibles del cero.

  • Sistemas numéricos de complemento:

Mientras que el sistema de magnitud con signo convierte en negativo un número al cambiar su signo, un sistema numérico de complemento convierte en negativo un número tomando su complemento como definido por el sistema. En el caso del sistema de numeración binario, los sistemas numéricos de complemento más empleados son el "complemento a 1" y el "complemento a 2".

– Complemento a 1:

Se obtiene complementando cada bit del número binario, es decir, cambiando cada 0 por 1 y viceversa.

Ejemplo:

edu.red

– Complemento de 2:

Se obtiene tomando el complemento a 1 y sumándole 1 al LSB del número binario.

Ejemplo:

edu.red

– Representación de números con signo mediante el complemento a 2:

El sistema complemento a 2 para representar números con signo trabaja de la siguiente manera:

  • Si el número es positivo, la magnitud esta representada por su equivalente binario verdadero y se agrega un 0 antes del MSB.

  • Si el número es negativo, la magnitud esta representada por su equivalente en complemento a 2 y se agrega un 1 antes del MSB.

Ejemplo:

edu.red

El sistema de complemento a 2 se emplea para representar números con signo porque permite efectuar la operación de resta de números binarios mediante una suma.

En general, la operación complemento a 2 de un numero con signo cambiara un numero positivo por uno negativo y viceversa.

La reconversión de un número en el sistema complemento a 2 a su valor binario verda-dero se efectúa simplemente siguiendo el mismo proceso que se empleo para obtener el complemento.

– Caso especial de la representación en complemento a 2:

Siempre que un número con signo tiene un 1 en el bit de signo y todos los bits de magnitud son 0, su decimal equivalente es -2n, donde n es el número de bits que hay en la magnitud.

Ejemplo:

edu.red

De este modo, podemos decir que el intervalo completo de valores que se pueden representar en el sistema complemento a 2 que tiene n bits de magnitud es -2n hasta +(2n-1). En total, existen 2n+1 valores diferentes, incluido el cero.

Suma y resta en el sistema complemento a 2

  • Suma:

Es importante observar que el bit de signo de cada número se opera en la misma forma que la parte de la magnitud.

– CASO I: dos números positivos.

edu.red

Notemos que los bits de signo del cosumando y del sumando son 0, y el bit de signo de la suma es 0, lo que indica que la suma es positiva. Notemos asimismo que el cosumando y el sumando se forman con el mismo número de bits; esto siempre debe llevarse a cabo en le sistema complemento a 2.

– CASO II: numero positivo y numero negativo menor.

edu.red

En este caso, el bit de signo del sumando es 1. Observemos que el bit de signo también participa en el proceso de adición; de hecho, se genera un acarreo en la última posición de la suma. Este acarreo siempre se descarta.

– CASO III: número positivo y número negativo mayor.

edu.red

Aquí, la suma tiene un bit de signo 1, lo que indica un número negativo. Como la suma es negativa, debemos tener en cuenta que esta se encuentra en su forma complemento a 2, de forma que los últimos cuatro bits representan en realidad el complemento a 2 de la suma. Para encontrar la magnitud verdadera de la suma, debemos tomar nuevamente el complemento a 2.

– CASO IV: dos números negativos.

edu.red

Este resultado final vuelve a ser negativo, y esta en forma complemento a 2 con bit de signo 1.

– CASO V: números iguales y opuestos.

edu.red

El resultado es obviamente 0, como se esperaba.

  • Resta:

La operación de sustracción que emplea el sistema complemento a 2 en realidad comprende la operación de adición. Cuando se resta un número binario (sustraendo) a otro número binario (minuendo), el procedimiento es el siguiente:

1. Se toma el complemento a 2 del sustraendo, incluyendo el bit de signo. Si el sustraendo es un número positivo, este se transformara en uno negativo en forma complemento a 2. Si el sustraendo es un número negativo, este se transformara en uno positivo en forma binaria verdadera. En otras palabras, se altera el signo del sustraendo.

2. Después de tomar el complemento a 2 del sustraendo, este se suma al minuendo. El minuendo se conserva en su forma original. El resultado de esta adición representa la "diferencia" que se pide. El bit de signo de esta diferencia determina si es positiva o negativa, y si se encuentra en forma binaria verdadera o en forma complemento a 2. Recordemos que ambos números deben tener el mismo número de bits.

Ejemplo:

edu.red

Se cambia el sustraendo a su forma complemento a 2 (11100), lo que representa (-4). Ahora, se suma esto al minuendo:

edu.red

Cuando el sustraendo se cambia por su complemento a 2, en realidad se convierte en -4, así que sumamos +9 a -4, que es lo mismo que restar +4 de +9. por lo tanto, cualquier operación de sustracción se convierte en realidad en una de adición cuando se emplea el sistema complemento a 2.

 

 

 

 

Autor:

Eduardo Daniel Andolfi

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente