jueves, 14 de octubre de 2010

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 = (b- 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 bdel 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 100OJO: 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.

1 comentario: