miércoles, 15 de junio de 2011

ARITMETICA DEL COMPUTADOR

ARITMETICA DEL COMPUTADOR y REPESENTACION DE LOS NUMEROS
  •  Los computadores manejan datos representados como una secuencia de bits.
  • Los datos pueden ser numéricos y no numéricos.
  •  Datos no numéricos: Representación ASCII de los caracteres (cada uno ocupa 1 byte).
  •  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.  Claro está que la computadora realiza estos procesos a enormes velocidades, de manera que el usuario ni se entera de lo que sucede ahí dentro.
  • 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, pues la memoria de la máquina consiste en un vasto número de dispositivos de registro magnético y electrónico, cada uno de los cuales sólo puede presentar uno de dos posibles estados: magnetizado en un sentido, representando al cero, o magnetizado en el otro sentido, representando al uno.  Cada dispositivo magnético es un dígito binario, denominado bit (abreviatura de "binary digit").
  •  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 (los tamaños de palabra más usuales son los de 16 o de 32 bits).  También se utilizan otras unidades denominadas bytes, constituidos generalmente por 8 bits, y utilizados como particiones de palabras, para representar caracteres.  Así, por ejemplo, una palabra de 32 bits consta de 4 bytes.
  • La manera en que se usan los bits para registrar los números enteros y los números fraccionarios, varía en función del diseño de la computadora.

ARITMETICA DEL PUNTO FLOTANTE
Los números de punto flotante se representan en el hardware de la computadora en fracciones en base 2 (binario). Por ejemplo, la fracción decimal
0.125, tiene el valor 1/10 + 2/100 + 5/1000, y de la misma manera la fracción binaria
0.001,tiene el valor 0/2 + 0/4 + 1/8. 
Estas dos fracciones tienen valores idénticos, la única diferencia real es
que la primera está escrita en notación fraccional en base 10 y la segunda en base 2.
Desafortunadamente, la mayoría de las fracciones decimales no pueden representarse exactamente como fracciones binarias. Como consecuencia, en general los números de punto flotante decimal que ingresás en la computadora son sólo aproximados por los números de punto flotante binario que realmente se guardan en la máquina.
El problema es más fácil de entender primero en base 10. Considerá la fracción 1/3. Podés aproximarla como una fracción de base 10
0.3
o, mejor, 0.33 mejor,
0.333
 No importa cuantos dígitos desees escribir, el resultado nunca será exactamente 1/3, pero será una aproximación cada vez mejor de 1/3.
De la misma manera, no importa cuantos dígitos en base 2 quieras usar, el valor decimal 0.1 no puede representarse exactamente como una fracción en base 2. En base 2, 1/10 es la siguiente fracción que se repite infinitamente:
0.0001100110011001100110011001100110011001100110011...
En la mayoría de las máquinas de hoy en día, eso es lo que verás si ingresás 0.1 en un prompt de Python. Quizás no, sin embargo, porque la cantidad de bits usados por el hardware para almacenar valores de punto flotante puede variar en las distintas máquinas, y Python sólo muestra una aproximación del valor decimal verdadero de la aproximación binaria guardada por la máquina. En la mayoría de las máquinas, si Python fuera a mostrar el verdadero valor decimal de la aproximación almacenada por 0.1, tendría que mostrar sin embargo
>>> 0.1
0.1000000000000000055511151231257827021181583404541015625

BIBLIOGRAFIA
http://www.ac.usc.es/pag_personal/fran/Tecnologia/Tema2b.pdf
http://www.uv.es/diaz/mn/node12.html
http://docs.python.org.ar/tutorial/floatingpoint.html

No hay comentarios:

Publicar un comentario