SISTEMAS NUMÉRICOS.
CONVERSIÓN ENTRE SISTEMAS NUMÉRICOS.
OPERACIONES BINARIAS ARITMÉTICAS: SUMA, RESTA, MULTIPLICACIÓN Y COMPLEMENTO



Empecemos por mencionar a los "Elementos discretos". Estos no son más que un grupo de símbolos con un significado. Por ejemplo: Números, letras, signos de puntuación, etc. Colocar elementos discretos uno al lado del otro representan información. De hecho, esta secuencia de elementos forman un "lenguaje" y que obviamente deben conocer para poder saber cuál es la información que contiene. Los primeros computadores se usaban para realizar cálculos numéricos y los elementos discretos usados eran los dígitos y es de aquí que surge el término computador digital.

En los sistemas digitales, los elementos discretos son representados por señales (en nuestro caso señales eléctricas) y en el caso particular de los sistemas digitales actuales las señales tienen sólo 2 posibles valores discretos y por esa razón se les conoce como binarios. Las señales representan dos estados que acorde a la lógica humana representan verdadero o falso.

COMENTARIO: Es probable que en un futuro estos sistemas digitales sean reemplazados por otros que usen "Fuzzy Logic" o "lógica difusa". A este tipo de sistemas, además de los dos valores verdadero y falso, se le añade otro estado que representaría un "quizá" o en el caso de que ese estado pueda contener varios valores un "es verdad pero sólo en cierto grado". Es en este tipo de lógica que muchos expertos consideran podría estar la verdadera esencia de la inteligencia artificial. No todo es blanco o negro ;-).

Señales analógicas: Son señales que se representan de forma continua y no por elementos discretos como las señales digitales. Si queremos simular un proceso que es analógico en un sistema digital requeriremos de un "convertidor Analógico Digital". Éste se encargará de "transformar" los datos analógicos a una forma que sea representada por elementos discretos y así poder ser procesada por sistemas digitales. Un ejemplo de ello son los CD's de música. El sonido es una señal analógica. Esto quiere decir que la variación de la misma es de forma continua pero los CD's son un medio de almacenamiento digital. Es por ello que el sonido debe pasar por un proceso de conversión para poder ser usado en sistemas digitales. Y esto es sólo un ejemplo. Otro sería la luz, que es también una señal continua (o analógica). La cantidad de aplicaciones que pueden realizarse con los sistemas digitales actuales son muy variadas. Algunos ejemplos son: numéricas, procesamiento de texto, aplicaciones de diseño gráfico, estudios digitales de audio, etc. El "truco" es saber cómo expresar esa información en términos discretos y en nuestro caso específico “binarios” para que dichos sistemas digitales puedan procesarla, por lo que la necesidad de este tipo de sistemas en el mundo moderno es por demás evidente.


NÚMEROS BINARIOS

Como mencionamos anteriormente, los sistemas digitales actuales sólo procesan dos señales (cierto o falso) y es por ello que se aplica el término de binario. Nosotros estamos acostumbrados a usar los números en base decimal (o base 10) pero ésta es sólo una de las formas de representar cantidades. En realidad "2" es sólo un símbolo y cuando lo vemos nosotros entendemos que existen dos unidades de algo. Si yo les digo que tengo 2 computadoras ustedes no visualizan el símbolo 2 sino la cantidad... quizá representada por una computadora al lado de la otra, pero no el símbolo. Así que "2" es sólo eso: un símbolo. Lo que trato de hacerles entender es que no importa cómo lo expresemos, qué símbolo o símbolos usemos, lo importante es que entendamos ese "lenguaje" y saber qué es lo que representa. Usamos los símbolos como una abstracción para representar cantidades.

Pongamos que tenemos un número decimal tal como 123. Eso representa una centena más dos decenas más tres unidades. O sea:

1 x 102 + 2 x 101 + 3 x 100

o sea, 123 ;-). Por lo tanto podríamos decir que si tenemos un número decimal de forma

a4a3a2a1a0

entonces a4, a3, a2, a1 y a0 son los coeficientes en la siguiente ecuación:

a4 x 104 + a3 x 103 + a2 x 102 + a1 x 101 + a0 x 100

donde todos los coeficientes deben ser un número entre 0 y 9. En este caso en particular estamos usando lo que conocemos: la base 10 o sistema decimal; pero podemos ampliar este concepto a cualquier base. Por lo tanto podemos decir que todo número puede ser expresado en un sistema de base "b" por:

an.bn + an-1.bn-1 + ... + a2.b2 + a1.b1 + a0.b0

y en el caso que contenga decimales:

an.bn + an-1.bn-1 + ... + a2.b2 + a1.b1 + a0.b0 + a-1.b-1 + a-2.b-2 + ... + a-m.b-m

donde an es un valor que siempre estará entre 0 y (b-1) siendo “n” el número de dígitos enteros menos uno y “m” el número de dígitos en la fracción decimal. En un número binario la base es 2. Por lo tanto, un número binario sólo puede contener dígitos entre 0 y 1 (que en nuestro caso representarán los dos estados que asociamos con falso o cierto). A un solo dígito binario (elemento mínimo de un número binario) se le conoce como BIT. A la agrupación de 8 BITS se le conoce como BYTE.

Un ejemplo de un número binario es: 1010011. Si quisiéramos representar este número de 7 bits (donde b=2, n=6 y m =0) de una forma que nos fuese más familiar, es decir, en decimal, haríamos:

1 x 26 + 0 x 25 + 1 x 24 + 0 x 23 + 0 x 22 + 1 x 21 + 1 x 20 = 64 + 0 + 16 + 0 + 0 + 2 + 1 = 83

por lo tanto, el número binario de 7 bits 1010011 es igual que el número decimal 83. Son dos formas distintas de expresar la misma cantidad. Y que lo haya convertido a decimal no quiere decir que la fórmula convierte el número a base decimal. En realidad Yo usé la base decimal para resolver porque es la forma natural en la que nosotros pensamos. Vi 26, y yo sé que representa una cantidad de sesenta y cuatro y la forma en la que Yo sé escribir esa cantidad es en decimal y representada por los símbolos 64. Si yo pensase en otra base, como veremos más adelante, vería otros símbolos pero al final representarían la misma cantidad.

Cuando trabajamos con números en distintas bases la forma de expresar en qué base está escrito un número es colocándole dentro de paréntesis e indicando al lado la base. Por ejemplo:

(1010011)2 = (83)10

quiere decir que el número 1010011 en base 2 es igual al número 83 en base 10.

Por supuesto los números binarios, o en base 2, son sólo un ejemplo. La base puede ser cualquiera. Supongamos ahora que les digo que tenemos: (1234,2)5 que es un número en base 5 con fracción decimal y que, como se observa, sólo usa dígitos del 0 al 4 que, como ya se ha mencionado, son las únicas posibilidades. Bien, luego les digo que lo conviertan a base 10. Sabiendo que en ese caso n=3, que m=1 y que la base b=5, entonces gracias a la fórmula que ya mostramos podremos decir que:

(1234,2)5 = 1 x 53 + 2 x 52 + 3 x 51 + 4 x 50 + 2 x 5-1 = 125 + 50 + 15 + 4 + 0,4 = (194,4)10

Perfecto. Por lo tanto ya sabemos entonces qué debemos hacer para convertir números que están en cualquier base “b” a, en nuestro caso, base 10.

Si el número que queremos mostrar está en una base menor o igual a diez pues podremos usar los dígitos conocidos por nosotros (del 0 al 9) como los "símbolos" a usar. Pero ¿qué pasa si el número está en una base mayor a 10? pues que deberemos usar otros símbolos. Lo normalmente usado son las letras del alfabeto (regularmente en mayúsculas) para expresar dichos números. Por ejemplo el sistema en base hexadecimal (ámpliamente usado) que está en base 16 usa los símbolos A, B, C, D, E y F para expresar las cantidades que conocemos en decimal como 10, 11, 12, 13, 14 y 15 respectivamente (los cuales son necesarios en la base 16 ya que recuerden que los coeficientes en cualquier base son números entre 0 y base-1). Por lo tanto:

(1F)16 = 1 x 161 + 15 x 160 = 16 + 15 = (31)10

y, más interesante aún:

(10)16 = 1 x 161 + 0 x 160 = 16 + 0 = (16)10

y es por eso comentaba que no importan los símbolos usados, lo importante es saber la cantidad que representan y para ello es necesario saber el "lenguaje" que se está hablando. Si yo escribo los símbolos 10... que ven ustedes? Pues lo que ven dependerá de su sistema base. Ustedes pueden decir que entienden una cantidad de diez. Yo digo que entiendo una cantidad de dieciséis. Si ustedes están trabajando en base 10 y yo en base 16, ambas cantidades son correctas.

Hace unos momentos cuando estábamos en el punto de convertir números según la formula dije: "Si yo pensase en otra base" . Que pasa si probamos el mismo ejemplo, pero esta vez “pensando” en hexadecimal. Tendríamos:

(1010011)2 = 1 x 26 + 0 x 25 + 1 x 24 + 0 x 23 + 0 x 22 + 1 x 21 + 1 x 20 = (40)16 + 0 + (10)16 + 0 + 0 + (2 + 1)16 = (53)16

Ahora, cuando yo vi 26 vi la cantidad o el valor de sesenta y cuatro que es representada en hexadecimal por los símbolos 40, 24 por 10, etc.


NÚMEROS HEXADECIMALES Y OCTALES

Como ya se comentó, los números hexadecimales son aquellos que están en base 16. En el caso de los octales tienen base 8. Estos números son muy usados en los sistemas digitales principalmente porque pueden representar los números binarios de una forma más compacta (debido a que 23 son 8 y 24 son 16). Realizar esa conversión es extremadamente sencillo. Veamos el siguiente ejemplo: (10100101)2 es un número binarios de 8 bits (o un byte). Este puede ser representado en dos partes de 4 bits (conocidas como NIBBLES). Si dividimos el byte del ejemplo en sus Nibbles, tendríamos: 1010 y 0101 cada una representando 24 posibilidades, o sea un número hexadecimal (un número entre 0 y 15). Así:

(1010)2 = (A)16 , (0101)2 = (5)16 => (10100101)2 = (A5)16.

El caso de octal es semejante. Si tenemos el número (101010111)2 podríamos dividir éste en tres partes de 3 bits (o sea, con 23 posibilidades cada una) y tendríamos: 101, 010 y 111 que representan los números octales 5, 2 y 7 respectivamente. Por lo tanto:

(101010111)2 = (527)8

Y por supuesto que hacer lo contrario, o sea, convertir de octal o hexadecimal a binario, es igual de sencillo. Por ejemplo:

(7531)8 => 111 101 011 001 => (111101011001)2

(123,A)16 = 0001 0010 0011 , 1010 = (000100100011,1010)2

Pero existen otras conversiones que no son tan obvias como éstas. A continuación profundizaremos en ellas.


CONVERSIONES ENTRE NÚMEROS DE BASE DIFERENTE

La conversión entre números de distintas bases a un número decimal es, como ya vimos, bastante sencilla. Sólo debemos usar la fórmula que ya se describió. Pero ¿qué pasa si lo que queremos es convertir un número decimal a binario? ¿o a hexadecimal? ¿o a octal? Para realizar estas conversiones primero que nada, si el número tiene parte decimal, separamos la parte entera de la fracción decimal. La mejor forma de mostrar la conversión es a través de ejemplos. Veamos algunos:

Convertir a binario el número decimal 41: En el caso de querer convertir a números binarios lo que debemos hacer es realizar sucesivas divisiones del número a convertir entre dos hasta que lleguemos a un cociente de cero. Los restos de las divisiones representarán los dígitos desde el menos significativo (que será el primer resto) hasta el más significativo que será el resto de la última división cuando lleguemos al cociente cero. Entonces si el número es 41, al realizar la división entre dos obtendremos un cociente de 20 y un resto de 1. Es precisamente el resto quien indicará cuál es el valor del bit y en este caso este es el bit menos significativo. Luego haremos la operación nuevamente con el nuevo cociente que es el 20 y así sucesivamente hasta llegar al momento en que el cociente sea 0. Entonces, desde el principio:

Por lo tanto:

(41)10 = (a5a4a3a2a1a0) = (101001)2

¿y si quisiéramos mostrar el número en octal y/ó hexadecimal, partiendo de que ya tenemos el número binario?, entonces sería:

(101001)2 = (51)8 = (29)16

Veamos otro ejemplo. Convertir el número decimal 161 a binario. Haríamos:

161

80

40

20

10

5

2

1

0

1

0

0

0

0

1

0

1




sabiendo que el primer bit es el menos significativo tendríamos:

(161)10 = (10100001)2

partiendo del binario, en octal y hexadecimal sería:

(10100001)2 = (A1)16 = (241)8

¿quieren revisar? OK:

(A1)16 = 10 x 161 + 1 x 160 = 160 + 1 = (161)10

(241)8 = 2 x 82 + 4 x 81 + 1 x 80 = 128 + 32 + 1 = (161)10

Ok, todo chévere. Pero ¿qué pasa si lo que quiero es convertir el número decimal directamente a octal o a hexadecimal? (quiero decir si NO tenemos el número binario). Por supuesto, ustedes podrían convertirlo a binario y luego a octal o hexadecimal. Soy de la política de que no importa cómo se llegue al resultado mientras éste sea el correcto a menos claro está de que se les diga explícitamente que lo hagan de alguna forma en particular. En todo caso, la forma más rápida de hacerlo sería aplicando el método análogo a la conversión a binario sólo que cambiando el divisor a la base correspondiente. Si en binario es 2, en octal es 8, en hexadecimal es 16 en base 5 sería 5, etc. Procedamos con el mismo ejemplo anterior, con el número 161. Convirtámoslo a octal. Sería:

por lo tanto:

(161)10 = (241)8

ya que el primer resto es el dígito menos significativo. Y ¿qué tal a hexadecimal? Sería:

entonces:

(161)10 = (A1)16

Ok. Si la base destino es 5, por ejemplo, llevarlo a binario no les serviría de nada. En este caso tendríamos que proceder obligatóriamente con el método explicado, en este caso siendo el divisor el número 5. Mismo ejemplo:

161

RESTO

32

1

6

2

1

1

0

1



Por lo tanto:

(161)10 = (1121)5

Revisemos:

(1121)5 = 1 x 53 + 1 x 52 + 2 x 51 + 1 x 50 = 125 + 25 + 10 + 1 = (161)10

CORRECTO!!! Veamos ahora el caso de que el número sea con decimales. Como ya se comentó, en estos casos es más conveniente separar la parte entera de la fracción decimal. La parte entera ya sabemos cómo resolverla. La fracción decimal se hace por un procedimiento similar pero la operación involucrada es la multiplicación y quien representará el dígito a colocar será la parte entera siendo el primer entero quien será la cifra más significativa. Por ejemplo si queremos convertir el número decimal 0,8125 a binario hacemos:

así que

(0,812)10 = (0,1101)2

Revisemos:

(0,1101)2 = 1 x 2-1 + 1 x 2-2 + 0 x 2-3 + 1 x 2-4 = 0,5 + 0,25 + 0 + 0,0625 = (0,8125)10

Excelente!!! Veamos un último ejemplo. Convertir el número decimal 48,407407407407 (407 periódico) al correspondiente en base 3. Para la parte entera:

y para la fracción decimal:

Por lo tanto

(48,407407407407...)10 = (1210,102)3

Revísenlo.

NOTA: Dada la confusión presentada por los números en distintas bases y viendo el resultado en algunos alumnos que dio dar ejemplos de series en distintas bases, aquí les anexo una tabla con números en decimal y su correspondiente en otras bases. Observen como varían los símbolos usados en las distintas bases en incrementos de uno.

Decimal

Hexadecimal

Octal

Base 3

Base 7

0

0

0

0

0

1

1

1

1

1

2

2

2

2

2

3

3

3

10

3

4

4

4

11

4

5

5

5

12

5

6

6

6

20

6

7

7

7

21

10

8

8

10

22

11

9

9

11

100

12

10

A

12

101

13

11

B

13

102

14

12

C

14

110

15

13

D

15

111

16

14

E

16

112

20

15

F

17

120

21

16

10

20

121

22

17

11

21

122

23

18

12

22

200

24

30

1E

36

1010

42

31

1F

37

1011

43

32

20

40

1012

44

64

40

100

2101

121

69

45

105

2120

126

70

46

106

2121

130

71

47

107

2122

131

Si por ejemplo tienen el número (12)3 y se le pide que le sumen 2, el resultado que van a obtener es el número en base 3 que está 2 posiciones adelante del (12)3 , en este caso el (21)3. Espero que esta tabla les sirva para comprender mejor los números en bases distintas. (4 + 6)7 = (13)7. Teniendo ya esto en cuenta, veamos como se realizan operaciones aritméticas en distintas bases.

OPERACIONES ARITMÉTICAS CON NÚMEROS DE DISTINTAS BASES

En realidad las operaciones aritméticas se realizan igual sin importar cuál sea la base. La única consideración a tomar es que sólo pueden existir dígitos entre 0 y base-1. Veamos algunos ejemplos de suma, resta y multiplicación.

Sume los números binarios 10111101 y 10110:

10111101

+ 010110

---------------------------------

11010011

Como les dije deben considerar la base que se está usando. En este caso usamos números binarios (base 2) por lo que los dígitos sólo pueden ser 0 ó 1. ¿Qué tenemos entonces? Bien, para este caso de suma (sólo dos números binarios) lo que debemos saber es que (0+0)=0, (0+1)=(1+0)=1, (1+1)=10 y (1+1+1)=11. Por lo tanto, empezando por el dígito menos significativo tenemos que: (1+0)=1. Sigamos: (0+1)=1, (1+1)=10 (por lo que colocamos el 0 y sabemos que llevamos 1 de acarreo que para el resto de la explicación pondré entre []), ([1]+1+0)=10, ([1]+1+1)=11, ([1]+1+0)=10, ([1]+0)=1 y por último (1+0)=1. Revísenlo y practiquen haciendo ejercicios.



Realice la resta entre los mismos números:

10111101

- 0010110

---------------------------------

10100111

Ok, sabiendo que (0-0)=0, (1-0)=1, (1-1)=0, (0-1)=-1 y (10-1)=1, entonces, empezando por el menos significativo y continuando, (1-0)=1, (10-1)=1, (10-1)=1, (0-0)=0, (1-1)=0, (1-0)=1 y (10-0)=10. En realidad no hay más que explicar aquí. Realicen ejercicios.

Por último la multiplicación:

10111101

x 10110

--------------------------------------------------

________00000000

______10111101

____10111101

__00000000

10111101

---------------------------------------------------

1000000111110



En la multiplicación de números binarios tenemos que (0 x 0)=(0 x 1)=(1 x 0)=0 y (1 x 1)=1 el cual, como veremos en los próximos capítulos, es el comportamiento de una compuerta AND. Ese análisis nos es familiar ya que cumple exactamente las mismas propiedades a las que estamos acostumbrados. Yo diría más bien que realizar esta multiplicación es un buen ejercicio para la suma ya que debe considerar múltiples acarreos. Entienda que en binario (1+1+1)=11, (1+1+1+1)=100, (1+1+1+1+1)=101, (1+1+1+1+1+1+1+1)=1000, etc.

Hagamos ahora la suma y resta de los mismos números pero en hexadecimal:

BD + 16 = D3

ya que (D+6)16=(13)16 que conlleva 1 de acarreo y luego ([1]+B+1)16=D16. Para la resta:

BD - 16 = A7

Lo cual no tiene mucho que analizar. La consideración más importante a tomar es qué dígitos se pueden usar lo cual depende de la base. De resto el procedimiento es igual al que estamos familiarizados.



COMPLEMENTOS

Los complementos son muy usados en los sistemas digitales al momento de realizar operaciones de resta. Existen dos tipos de complemento. El complemento a b y el complemento a b-1 donde b es la base. Es decir, para los números binarios existen los complementos a 2 y a 1. En base octal serían complemento a 8 y a 7, etc. El complemento a b se define de la siguiente forma:

Complemento a b

Teniendo un número N de n dígitos enteros, el complemento a b de N = (bn - N) si N ≠ 0 y será 0 si N=0. Esto se cumple para todos los números N positivos incluso con fracción decimal. El único caso especial a considerar es cuando la parte entera es cero. Esto se interpreta como que n = 0.

Veamos algunos ejemplos: ¿Cuál es el complemento a 10 de (987)10? En este caso N = 987 y n = 3, entonces:

103 - 987 = 1000 - 987 = 13

¿El complemento a 10 de (0,125)10? Aquí N = 0,125 y n = 0, así que:

100 - 0,125 = 1 - 0,125 = 0,875

¿El complemento a 10 de (987,125)10? N= 987,125 y n = 3, por lo tanto:

103 - 987,125 = 1000 - 987,125 = 12,875

ATENCIÓN: Observen que NO es lo mismo que calcular el complemento de la parte entera y de la fracción decimal por separado y juntar los resultados. OJO con eso.

Veamos unos casos en binario. Para el complemento a 2 de (10101100)2 tenemos que n=8, entonces:

(28)10 - (10101100)2 = (256)10 - (10101100)2 = (100000000 - 10101100)2 = (01010100)2

Otro. El complemento a 2 de (1010)2 es

(10000 - 1010)2 = (0110)2

Obsérvese que para calcular el complemento a 2 de un número binario sólo basta con revisar todos los dígitos desde el menos significativo hacia el más significativo y mientras se consiga un cero, dejarlo igual, al conseguir el primer número 1, dejarlo igual para luego cambiar el resto de ellos hasta llegar al más significativo. Así podemos decir rápidamente que el complemento a 2 de (10100000)2 es (01100000)2, que el complemento a 2 de (111)2 es (001)2, etc. Otra forma muy sencilla de hallar el complemento a 2 de un número binario es invirtiendo todos los dígitos (que como veremos a continuación es lo que se conoce como complemento a 1) y sumándole uno al resultado obtenido. Pruébenlo.

Complemento a b-1

Por otro lado tenemos también el complemento a b-1. En este caso, teniendo un número positivo N en base b con n dígitos enteros y m dígitos en la fracción decimal, se conoce como complemento a b-1 de N a

bn - b-m - N

Veamos entonces. Para el complemento a 9 de (987)10 tenemos que N = 987, n = 3 y m = 0, por lo tanto

103 - 100 - 987 = 1000 - 1 - 987 = 12

Para el complemento a 9 de (0,125)10 tenemos que N = 0,125 y n = 0 y m = 3, entonces

100 - 10-3 - 0,25 = 1 - 0,001 - 0,125 = 0,999 - 0,125 = 0,874

Y ¿qué hay del complemento a 9 de (987,125)10? En ese caso N= 987,125 ; n = 3 y m = 3, por lo tanto

103 - 10-3 - 987,125 = 1000 - 0,001 - 987,125 = 999,999 - 987,125 = 12,874

Observen que en este caso sí es lo mismo calcular el complemento de la parte entera y el de la fracción decimal por separado y juntar ó sumar los resultados.

Algunos ejemplos en binario. Para el complemento a 1 de (10101100)2 sabemos que n=8 y m=0 =>

(28)10 -1 - (10101100)2 = (256)10 - 1 - (10101100)2 = (100000000 - 1 - 10101100)2 = (01010011)2

y que el complemento a 1 de (1010)2 es

(10000 - 1 - 1010)2 = (0101)2

En estos dos últimos ejemplos se puede observar que para conseguir el complemento a 1 de un número binario basta con tan solo invertir todos los dígitos (esto quiere decir cambiar 0 por 1 y viceversa). Es por esto que les comenté anteriormente que otra forma de calcular el complemento a 2 de un número binario es hallando el complemento a 1 (o sea invertir todos los digitos) y sumarle 1.

Resta por complemento

Al principio les dije que los complementos se usaban mucho en los sistemas digitales para realizar cálculos de resta. Si queremos realizar una resta basándonos en el complemento a b (base) lo que hacemos es sumar al minuendo el complemento a b del sustraendo. Si la suma acarrea 1, éste se descarta. En caso contrario se dice que el número es negativo y será el complemento a b del resultado de la suma.

Veamos un ejemplo con números: (123 - 023)10 ; aquí el complemento a 10 de 23 es 977, entonces:

123

+ 977

-------------------------

1 100

El primer 1 es el acarreo por lo que la respuesta es 100. OJO: al usar este método debe considerar todos los números con la misma cantidad de dígitos. ¿Qué quiero decir con esto?, que NO, repito: NO! pueden considerar el número 23 como un número de 2 dígitos. Minuendo y sustraendo deben contener el mismo número de dígitos. Por lo tanto deben considerar 023. En caso contrario obtendrían un error.

Veamos otro ejemplo en el que la suma no arroja complemento: (23 - 100)10 ; para este caso el complemento a 10 de 100 es 900 => 23 + 900 = 923 ( no lleva acarreo ) => el complemento a 10 de 923 es 77 => Respuesta = -77.

También existe un método para realizar la resta pero usando el complemento a b-1. Este caso es muy similar al caso anterior con la diferencia del acarreo. Aquí, en el caso de haber un acarreo, éste no es descartado sino que el mismo es sumado al resultado de la suma para obtener el resultado final. En caso de no tener acarreo, al igual que antes, se procede a realizar el complemento del resultado de la suma y agregarle un signo negativo. OBVIAMENTE todos los cálculos de complementos en este método son basados en el complemento a b-1 y no al complemento a b.

Veamos algunos ejemplos: (123 - 023)10 ; el complemento a 9 de 23 es 976 , entonces

123

+ 976

--------------

1 099

+ 1

--------------

100

El primer 1 es el acarreo y como éste debe sumársele al resultado de la suma tenemos que 99 + 1 es 100. Por supuesto que al usar este método también debe considerar todos los números con la misma cantidad de dígitos. El número 23 es en realidad 023. Veamos el otro ejemplo en el que la suma no arroja complemento: (23 - 100)10 => el complemento a 9 de 100 es 899 => 23 + 899 = 922 ( no lleva acarreo ) => el complemento a 9 de 922 es 77 => Respuesta = -77

Veamos algunos casos con números binarios. Realizar la resta por complemento a 2 y por complemento a 1 de: (10101110 – 110010)2

Por el método de complemento a 2 tenemos: El complemento a 2 de 110010 (recordando que debe tener 8 dígitos) es 11001110 entonces

10101110

+ 11001110

-------------------

1 01111100

de lo que se concluye que (10101110 - 110010)2 = (1111100)2

Veámoslo ahora por el método de complemento a 1. Aquí tendríamos que complemento a 1 de 110010 es 11001101, entonces

10101110

+ 11001101

-------------------

1 01111011

por lo que tenemos que hacer (01111011 + 1)2 resultando (01111100)2.

Excelente. Veamos otro caso. Realizar la resta de (110010 - 10101110)2. Por complemento a 2 sería:

00110010

+ 01010010

----------------

10000100

que como no tiene acarreo le calculamos el complemento a 2 y tenemos que el resultado es -1111100. Con el método de complemento a 1 sería:

00110010

+ 01010001

---------------------

10000011

y calculando el complemento a 1 (ya que no tiene acarreo) tenemos que el resultado = -01111100. Lo cual es correcto.

¿Por qué haríamos una resta con complemento? La suma es mucho más sencilla de implementar en los sistemas digitales; y por otro lado, aunque en base 10 no tenemos problemas para realizar una resta, hacer el mismo proceso para otras bases no nos será tan intuitivo por lo que estos métodos facilitarían el proceso del cálculo.

Como comentario final me gustaría acotar que las computadoras trabajan los números negativos a través del complemento a dos. Para ellas, el primer bit del byte indica el signo. Si este es uno (1) querrá decir que el número es negativo. Por lo tanto, y basándonos en este último ejemplo por el método de complemento a dos, al realizar la resta de 110010 - 10101110 el resultado que almacena el computador en sus registros o variables es en realidad el número (10000100)2 o lo que es lo mismo (84)16. Al tener el bit más significativo activo, representa que es un número negativo y que el mismo es su complemento a 2.

Pues bien, esto es lo último en este capítulo. Para el próximo hablaremos de Códigos binarios. Álgebra de Boole. Funciones lógicas. Compuertas lógicas.