Title: M
1MÉTODOS NUMÉRICOS1.4 Aritmética de la computadora
2Aritmética de la computadora
31.4 Aritmética de la computadora
- 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.
41.4 Aritmética de la computadora
- 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
51.4.1 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.
? n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14 n15
- 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 a dos para
almacenar los números negativos, lo cual consiste
en cambiar la interpretación de la polaridad en
los dispositivos magnéticos e incrementar en 1 el
resultado obtenido esto hace que su rango se
incremente en 1, para que sea -32768. - 00000000000000002 0
10000000000000002 -3276810
61.4.1 Los números enteros en computadora
71.4.1 Los números enteros en computadora
- 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 - Entonces, el rango de almacenamiento de números
enteros decimales, en máquinas con palabras de
memoria de 16 bits es (-32,768, 32,767),
valores más que suficientes para lo que requiere
un ingeniero. - Si el tamaño de palabra de la computadora es de 4
bytes (32 bits), el campo correspondiente es
conocido como entero largo, pues el rango se
incrementa sustancialmente (-2147,483,648,
2147,483,647), obtenido de 231 1, con
complemento a dos.
81.4.1 Los números enteros en computadora
- Ejemplo Representar el número 2834510 en
sistema binario, en una palabra de 16 bits. - 28345 1
- 14172 0
- 7086 0
- 3543 1
- 1771 1
- 885 1
- 442 0
- 221 1
- 110 0
- 55 1
- 27 1
- 13 1
- 6 0
- 3 1
- 1 1
- 0
2834510 1101110101110012
0 1 1 0 1 1 1 0 1 0 1 1 1 0 0 1
()
91.4.1 Los números enteros en computadora
- Ejemplo Identificar qué número entero decimal
está representado en la siguiente palabra de 16
bits.
0 0 0 0 0 1 1 0 1 1 1 1 1 0 1 0
()
- 210 29 27 26 25 24 23 21
178610 - Ejemplo Representar el número -284910 en
sistema binario, en una palabra de 16 bits,
usando complemento a dos. - 2849 1
- 1424 0
- 712 0
- 356 0
- 178 0
- 89 1
- 44 0
- 22 0
- 11 1
- 5 1
- 2 0
- 1 1
- 0
284910 1011001000012 -284910 -1011001000012
101.4.1 Los números enteros en computadora
- Complementamos el valor a 15 caracteres 000101100
1000012 - Cambiamos la polaridad 1110100110111102
- Le sumamos 1 1110100110111112
1 1 1 1 0 1 0 0 1 1 0 1 1 1 1 1
(-)
- Ejemplo Identificar qué número entero decimal
está representado en la siguiente palabra de 16
bits, usando complemento a dos.
1 1 1 1 0 1 0 0 1 1 0 1 1 1 1 1
(-)
- El valor sin signo en 15 caracteres
es 1110110010100112 - Le restamos 1 1110110010100102
- Cambiamos la polaridad 0001001101011012
- - (211 28 27 25 23 22 20)
-247710 - Es fácil darse cuenta que el manejo de números
enteros en computadora no tiene el más mínimo
problema, siempre que los números introducidos o
los resultados del procesamiento no sobrepasen el
rango establecido.
111.4.2 Los números reales en computadora
- Las computadoras también manejan los números
reales en sistema binario, pero no pueden hacerlo
de manera exacta, porque el número de dígitos
está limitado por el tamaño de palabra de cada
máquina. La memoria de la computadora impone así
una restricción a la precisión y exactitud de los
números reales, pues al registrarlos,
necesariamente son redondeados, cometiendo con
ello pequeños errores. Claro que esta limitación
no es privativa de la computadoras en los
cálculos a mano o usando cualquier tipo de
calculadora, también tenemos que hacer redondeos. - 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 lt 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
121.4.2 Los números reales en computadora
- 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
-
- ?0.1mmmmmmmmmmmmmmmmmmmmmmm x 2 ?eeeeeee
- m 0, 1 e 0, 1
13Números reales
141.4.2 Los números reales en computadora
- En virtud de que la mantisa siempre empieza con
1, no hay necesidad de almacenar éste 1, de
manera que los 23 bits reservados para la mantisa
son para guardar desde el segundo hasta el
veinticuatroavo caracter del número binario en
punto flotante.
? ? e e e e e e e m m m m m m m m m m m m m m m m m m m m m m m
- Los 7 bits destinados al exponente se usan para
registrar números enteros binarios en el rango de
0000000 a 1111111. Su signo se controla por
separado (distinguido en rojo). - Conforme a esto, el mayor exponente positivo
posible sería el 127 y el menor exponente
negativo posible sería el -127 pero usando el
complemento a dos, su rango se incrementa en 1,
para que sea -128. - Los exponentes positivos se registran así
- 000000012 110 ... 011111112 12710
- 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í - 111111112 -110 ... 100000012 -12710
151.4.2 Los números reales en computadora
- Para analizar el rango de valores de la mantisa
se consideran 24 bits el 1 que no se guarda y
los 23 bits reservados que si quedan almacenados.
Entonces, se pueden registrar números
fraccionarios binarios en el rango de
0.100000000000000000000000 a 0.1111111111111111111
11111 - El valor fraccionario más pequeño equivale a 0.5
en decimal es 2-1 0.5 - El valor fraccionario más grande equivale a
0.999999940395 en decimal - 24
- ? 2- j 1 - 2-24 0.999999940395355224609
375 - j1
- Ahora bien, considerando simultáneamente los
rangos del exponente y de la mantisa, podemos
determinar el rango correspondiente a los números
reales - El número real positivo más pequeño que puede
representarse es - 0.5 x 2-128 ? 1.47 x 10-39
- El número real positivo más grande que puede
representarse es - 0.999999940395355224609375 x 2127 ? 1.70 x
1038 - De manera que el rango total para los números
reales positivos o negativos, en este tipo de
computadora es de 1.47 x 10-39 a 1.70 x 1038.
161.4.2 Los números reales en computadora
- 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
-
- 0.3125 100 0
- 0.6250 0 50 0
- 0.2500 1 25 1
- 0.5000 0 12 0
- 0.0000 1 6 0
- 3 1
- 1 1
- 0
-
- 31.2510 0.01012 x 11001002 11111.012
0.11111012 x 2101 - Recordando que el primer 1 de la mantisa no se
almacena, la representación queda
0 0 0 0 0 0 1 0 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
() ()
171.2.1 Los números reales en computadora
- Ejemplo Identificar el número real decimal que
está representado en la siguiente palabra de 32
bits
0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
() ()
- Recordando que el primer uno no está
representado, el número en binario es - 0.100001112 x 2101 10000.1112
- 24 2-1 2-2 2-3 16 0.5 0.25 0.125
16.87510 - Ejemplo Identificar el número real decimal que
está representado en la siguiente palabra de 32
bits
0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
() (-)
Dado que el exponente es negativo, le aplicamos
el inverso del complemento a dos primero
restándole 1 y luego cambiando la
polaridad 11101112 - 12 11101102
00010012 , con lo que el exponente
es -10012 Recordando que el primer 1 no está
representado, la mantisa es 0.12 El número en
binario es 0.12 x 2-1001 0.00000000012 y en
decimal 2-10 0.000976562510
181.4.2 Los números reales en computadora
- Ejemplo Representar en sistema binario, en una
palabra de 32 bits, el número -0.00072161910 - Requerimos de 25 cifras, a partir del primer 1
(24 a conservar y 1 para redondear) - 0.000721619 0.168091136 1
- 0.001443238 0 0.336182272 0
- 0.002886476 0 0.672364544 0
- 0.005772952 0 0.344729088 1
- 0.011545904 0 0.689458176 0
- 0.023091808 0 0.378916352 1
- 0.046183616 0 0.757832704 0
- 0.092367232 0 0.515665408 1
- 0.184734464 0 0.031330816 1
- 0.369468928 0 0.062661632 0
- 0.738937856 0 0.125323264 0
- 0.477875712 1 0.250646528 0
- 0.955751424 0 0.501293056 0
- 0.911502848 1 0.002586112 1
- 0.823005696 1 0.005172224 0
- 0.646011392 1 0.010344448 0
- 0.292022784 1 0.020688896 0
191.4.2 Los números reales en computadora
- La última cifra nos sirve para redondear la
penúltima. - - 0.00072161910 - 0.000000000010111101001010110
00010002 - - 0.1011110100101011000010002 x
2-1011 - Por ser un exponente negativo, le aplicamos el
complemento a dos primero complementándolo a 7
cifras, luego invirtiendo la polaridad y
finalmente sumándole un 1 - 00010112 11101002 12 11101012
- Recordando que el primer 1 de la mantisa no se
almacena, la representación queda
1 1 1 1 1 0 1 0 1 0 1 1 1 1 0 1 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0
(-) (-)
Ejemplo Suponga que una computadora maneja
palabras de 16 bits cuál sería el resultado de
sumar mil veces el número fraccionario 1/100?
cuál sería el error absoluto? Y cuál el
relativo?. Considere que la computadora recibe
las cifras en sistema decimal, las convierte a
binario, hace las operaciones en binario y el
resultado lo traduce a decimal. Considere los
dos bits para los signos, cinco bits para el
exponente y nueve espacios para la mantisa.
201.4.2 Los números reales en computadora
1/100 0.0110 0.00000010100011112
0.10100011112 x 2-110
- 0.01
- 0.02 0
- 0.04 0
- 0.08 0
- 0.16 0
- 0.32 0
- 0.64 0
- 0.28 1
- 0.56 0
- 0.12 1
- 0.24 0
- 0.48 0
- 0.96 0
- 0.92 1
- 0.84 1
- 0.68 1
- 0.36 1
- 0
- 500 0
- 250 0
- 125 1
- 62 0
- 31 1
- 15 1
- 7 1
- 3 1
- 1 1
- 0
100010 11111010002
1000 x 1/100 11111010002 x 0.10100011112 x
2-110
211.4.2 Los números reales en computadora
- El resultado exacto del producto anterior es, en
binario - 1001111100.10111000 x 2-110
- Cifra que redondeada a 10 bits, en formato de
punto flotante, queda expresada - 1001.111101 0.1001111101 x 2100
- Este resultado en binario, traducido a decimal
da - (0.500.06250.031250.0156250.00781250.003906
250.0009765625) x 2100 - 0.6220703125 x 16 9.95312510
- El verdadero valor de la operación es 1/100 x
1000 10 - El error absoluto cometido es E ? 10
9.953125 ? 0.046875 - El error relativo es e 0.046875/10
0.0046875 e 0.47
221.4.2 Los números reales en computadora
- No obstante el rango tan amplio de manejo, los
números reales no corresponden a un continuo en
la computadora, sino que hay un conjunto finito
de valores discretizados, que pueden ser
representados de manera perfecta, mientras que el
resto no pueden ser expresados con exactitud y
precisión y sólo es posible representarlos en
forma aproximada. - Por ejemplo, si el número real más pequeño que
puede representarse en una computadora como la
descrita anteriormente es - 0.5 x 2-128 ? 1.47 x 10-39,
- significa que no se pueden representar números
reales en el intervalo que está entre 0 y 1.47 x
10-39. - Si el número real más grande que puede
representarse es - 1.70141173319 x 1038,
- y el número positivo inmediato menor a éste, que
se puede representar es - 23
- ( ? 2-j ) x 2127 (1 -
2-23) x 2127 ? 1.70141163178 x 1038 - j1
- Entre estos dos últimos valores, tampoco se puede
representar ningún número real con notación de
punto flotante en este tipo de computadora el
tamaño de este intervalo es 1.0141 x 1031, que es
6.9 x 1069 veces más grande que el
correspondiente a valores más pequeños 1.47 x
10-39. Esto significa que la distribución de
números reales que pueden ser representados en
una computadora no es uniforme, sino que hay
mucho mayor densidad en los valores más pequeños
que en los más grandes.
231.4.2 Los números reales en computadora
- Pareciera que la imposibilidad de las
computadoras para representar cualquier número
real, con exactitud y precisión, se torna en un
asunto grave. No es así, ya que los "huecos" son
extraordinariamente pequeños, aún en el caso más
desfavorable, correspondiente a los números más
grandes. Si comparamos éstos 1.70141163178 x
1038 y 1.70141173319 x 1038, vemos que son
realmente muy cercanos la primera diferencia
entre ellos se presenta hasta el octavo dígito
esto significa, que los primeros siete dígitos
significativos nos ofrecen una confiabilidad
total, más que sobrada para fines de ingeniería. - Para casos muy eventuales se usa el recurso de
doble precisión que ofrecen las propias
computadoras y que consiste en utilizar un doble
tamaño de palabra (8 bytes o 64 bits) para
representar y almacenar números reales en formato
de punto flotante. La desventaja de utilizar tal
recurso es el mayor consumo de memoria y el mayor
tiempo de ejecución de los programas, los cuales,
al menos, se duplican.
24Épsilon de una computadora
- Se define como épsilon de una máquina al valor
absoluto de la diferencia entre 1 y el menor
número mayor que 1, pero distinguible de 1, que
puede ser representado en la computadora. Para
la máquina que hemos analizado anteriormente, el
número más pequeño mayor que uno es - 0.100000000000000000000001 x 21 (2-1 2-24) x
21 1.0000001192110 - por lo que el épsilon de esta máquina es
- 1.00000011921 - 1 0.00000011921 ? 1.19 x 10-7
- Evidentemente, mientras menor sea el épsilon de
una máquina, mayor es el conjunto de números que
puede representar en formato de punto flotante.
25Épsilon de una computadora
- Ejemplo Considere una computadora que utiliza
palabras de memoria de 16 bits para almacenar
números reales en formato de punto flotante,
guarda hasta 8 cifras de la mantisa, excluido el
primer 1, y aplica el complemento a dos a los
exponentes negativos. Si los 16 bits están
distribuidos como sigue - 1 bit para el signo de la mantisa,
- 1 bit para el signo del exponente,
- 6 bits para el exponente entero, expresado en
binario - 8 bits para la mantisa, expresada en binario
- a) determinar el rango de valores que podría
representar y almacenar esta computadora
hipotética. - b) calcular el épsilon correspondiente a esta
máquina.
26Épsilon de una computadora
- Los 6 bits destinados al exponente se usan para
registrar números enteros binarios en el rango de
000000 a 111111. Su signo se controla por
separado. El mayor exponente positivo posible
sería 26 - 1 63 y el menor exponente negativo
posible sería el -64, por la aplicación del
complemento a dos. - Los 8 bits reservados para la mantisa se usan
para registrar números fraccionarios en el rango
de 0.100000000 a 0.111111111. El valor
fraccionario más pequeño equivale a 0.5 en
decimal y el valor fraccionario más grande
equivale a 0.998134375 en decimal - 9
- ? 2-j 1 - 2-9 0.998046875
- j1
- Entonces, el número real más pequeño que puede
representarse es - 0.5 x 2-64 ? 2.71 x 10-20
- y el número real más grande, que puede
representarse es - 0.998046875 x 263 ? 9.21 x 1018
- El número más pequeño mayor que uno, que podría
almacenarse es - 0.100000001 x 21 (2-1 2-9) x 21
1.0039312510 - por lo que el épsilon de esta máquina sería
- 1.00393125 - 1 0.00393125 3.93 x 10-3