miércoles, 15 de junio de 2011

Aritmetica del Computador

El usuario se comunica con la computadora en sistema decimal, es decir, introduce en ella y extrae de ella números en base decimal.  Al recibir los datos, para poder trabajar con ellos, la computadora los convierte al sistema binario, su lenguaje natural de operación.  Todas las operaciones se efectúan en binario y los resultados obtenidos, antes de ser entregados al usuario, la máquina los convierte al sistema decimal. 
Sin embargo, al efectuar las conversiones y realizar los cálculos se suscitan pequeños errores que, si no se prevén, pueden propagarse y arrojar resultados muy inexactos o totalmente absurdos.  Por eso es tan importante el entender la aritmética de las computadoras e identificar las situaciones en que pueden ocurrir errores severos.
La operación interna de una computadora se basa en la aritmética binaria, en la que la base es el 2 y sólo hay dos símbolos: 0 y 1 (bit). Los bits se agrupan en unidades llamadas palabras, las cuales pueden contener  8, 16, 32 o 64 bits, dependiendo de la computadora de que se trate.  También se utilizan otras unidades denominadas bytes, constituidos generalmente por 8 bits.

REPRESENTACIÓN DE LOS NUMEROS

LOS NÚMEROS ENTEROS EN COMPUTADORA
Los números enteros requieren de al menos una palabra para almacenarse dentro de la memoria de la computadora; si el tamaño de palabra de la computadora es de 2 bytes (16 bits), el primer bit registra el signo: positivo si es 0, negativo si es 1, y los 15 bits restantes se usan para registrar números enteros binarios en el rango de 000000000000000 a 111111111111111.
Al convertir el número binario 111111111111111 a sistema decimal, se obtienen las cotas inferior y superior en sistema decimal:
214 + 213 + 212 + 211 + 210 + 29 + 28 + 27 + 26 + 25 + 24 + 23 + 22 + 21 + 20  =  215 - 1 = 32767
Conforme a esto, el mayor entero positivo posible sería el 32767 y el menor entero negativo posible sería el -32767; pero la mayoría de las computadoras usan el complemento A2 para almacenar los números negativos.
Entonces los números positivos se registran así:

                         00000000000000012 = 110                01111111111111112 = 3276710
 
Para los números negativos, la polaridad se invierte: los ceros se cambian por unos y los unos por ceros y se le añade un 1 al resultado, de manera que su registro se hace así:

               11111111111111112 = -110             10000000000000012 = -3276710

LOS NÚMEROS REALES EN COMPUTADORA
La forma de registrar un número real en una computadora digital depende del diseño del hardware y del software; sin embargo, el formato es del mismo tipo en todos los casos y se basa en el principio de utilizar la notación de punto flotante normalizado.
Cualquier número real decimal X puede ser expresado en notación científica normalizada; ésta consiste en expresar el número como una potencia de 10, asignándole el exponente n que resulte de desplazar el punto decimal las posiciones necesarias para que todos los dígitos significativos del número en cuestión queden inmediatamente a la derecha del punto, garantizando que el primero de ellos sea diferente de cero:
                                                                              X = F x 10n
donde F es un número menor que 1 y mayor o igual que 0.1:    0.1 £ F < 1 y  n es un entero positivo, negativo o cero: n Î Z.
Ejemplos:          
·         836.23810 =  0.836238 x 103
·         -0.0067281310 = -0.672813 x 10-2
De la misma manera, aunque con valores significativos diferentes, en sistema binario también se puede expresar cualquier número real con la notación científica normalizada, a la que en este caso se le llama notación de punto flotante normalizado.
                                                                              X = G x 2m
donde el exponente m es un entero positivo, negativo o cero, expresado en binario, y G es la mantisa del número, la cual debe ser menor que 1 y mayor o igual que 0.12 (ó 0.510).
Por ejemplo:                    
·         11111.012 = 0.11111012 x 2101
·         -0.000000111011012 = 0.111011012 x 2-110
La manera más común de almacenar números reales en una PC es utilizando palabras de 32 bits (4 bytes), distribuidos como sigue:
·         1 bit para el signo de la mantisa,
·         1 bit para el signo del exponente,
·         7 bits para el exponente entero, expresado en binario                 
·         23 bits para la mantisa, expresada en binario
Ejemplo: Representar en sistema binario, en una palabra de 32 bits, el número 31.2510
          31.2510 = 0.312510 x 102  = 0.312510 x 10010
          31.2510 = 0.01012 x 11001002 = 11111.012 = 0.11111012 x 2101


ARITMÉTICA DE PUNTO FLOTANTE
Multiplicación: la operación de multiplicar dos números expresados en punto flotante implica sumar los exponentes y multiplicar las mantisas. Si la mantisa resultante no está normalizada, se recurre a renormalizar el resultado ajustando adecuadamente el exponente. Después, es necesario redondear la mantisa a p bits.


División: para llevar a cabo la división en punto flotante, se divide la mitad de la mantisa del numerador por la mantisa del denominador, mientras que los exponentes se restan. Esto es:
 
Adición y sustracción: la operación de suma o resta se realiza del siguiente modo: se toma la mantisa del operando de menor magnitud (supongamos que es y) y se desplaza fx - fy posiciones a la derecha. La mantisa resultante es sumada (o restada) y el resultado se normaliza y después se redondea. Es decir:


EN CONCLUSIÓN,: en todas las operaciones aritméticas elementales en punto flotante, el error absoluto del resultado es no mayor de 1 en el bit menos significativo de la mantisa.



Bibliografía:
Aritmética del Computador: http://www.uv.es/diaz/mn/node7.html
Aritmética de la Computadora: Aritmética de la Computadora.ppt
Aritmética de Punto Flotante: http://www.uv.es/diaz/mn/node14.html

No hay comentarios:

Publicar un comentario