Sie sind auf Seite 1von 26

MÉTODOS NUMÉRICOS

Aritmética de la computadora

Gustavo Rocha 1
Aritmética de la computadora

Gustavo Rocha 2
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.

Gustavo Rocha 3
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
Gustavo Rocha 4
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 n1 n11 n1 n1 n1 n1
0 2 3 4 5

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

Gustavo Rocha 5
Los números enteros en computadora

Gustavo Rocha 6
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: (-2’147,483,648, 2’147,483,647), obtenido de 231 – 1, con
complemento a dos.

Gustavo Rocha 7
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 2834510 = 1101110101110012
110 0
55 1
27 1
13 1
6 0
3 1
1 1
0

0 1 1 0 1 1 1 0 1 0 1 1 1 0 0 1

(+)
Gustavo Rocha 8
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 284910 = 1011001000012 -284910 = -1011001000012
44 0
22 0
11 1
5 1
2 0
1 1
0
Gustavo Rocha 9
Los números enteros en computadora
– Complementamos el valor a 15 caracteres:0001011001000012
– 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.

Gustavo Rocha 10
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 < 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

Gustavo Rocha 11
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

Gustavo Rocha 12
Números reales

Gustavo Rocha 13
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

Gustavo Rocha 14
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.111111111111111111111111
– 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.999999940395355224609375
j=1

• 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.

Gustavo Rocha 15
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

(+) (+)

Gustavo Rocha 16
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

Gustavo Rocha 17
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
0.584045568 0 0.041377792 0

Gustavo Rocha 18
Los números reales en computadora
La última cifra nos sirve para redondear la penúltima.
- 0.00072161910 = - 0.00000000001011110100101011000010002
= - 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.

Gustavo Rocha 19
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 1000 0
0.08 0 500 0 100010 = 11111010002
0.16 0 250 0
0.32 0 125 1
0.64 0
62 0
0.28 1
31 1
0.56 0
15 1
0.12 1
0.24 0
7 1
0.48 0 3 1
0.96 0 1 1
0.92 1 0
0.84 1
0.68 1
0.36 1 1000 x 1/100 = 11111010002 x 0.10100011112 x 2-110

Gustavo Rocha 20
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.50+0.0625+0.03125+0.015625+0.0078125+0.00390625+0.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%

Gustavo Rocha 21
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

(
j=1
2-j ) x 2127 = (1 - 2-23) x 2127  1.70141163178 x 1038 ;

• 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.

Gustavo Rocha 22
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.

Gustavo Rocha 23
É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.

Gustavo Rocha 24
É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.

Gustavo Rocha 25
Épsilon de una computadora
a) 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


j=1

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
b) 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
Gustavo Rocha 26

Das könnte Ihnen auch gefallen