Sunteți pe pagina 1din 27

MTODOS NUMRICOS

Representacin de nmeros y Aritmtica de la


computadora

M. en C. Jos Andrs Vzquez Flores


1.4 Aritmtica de la computadora
El usuario se comunica con la computadora en sistema decimal, es
decir, introduce en ella y extrae de ella nmeros en base decimal.
Al recibir los datos, para poder trabajar con ellos, la computadora
los convierte al sistema binario, su lenguaje natural de operacin.
Todas las operaciones se efectan en binario y los resultados
obtenidos, antes de ser entregados al usuario, la mquina 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 clculos se
suscitan pequeos errores que, si no se prevn, pueden propagarse
y arrojar resultados muy inexactos o totalmente absurdos. Por eso
es tan importante el entender la aritmtica de las computadoras e
identificar las situaciones en que pueden ocurrir errores severos.
1.4 Aritmtica de la computadora
La operacin interna de una computadora se basa en la aritmtica
binaria, en la que la base es el 2 y slo hay dos smbolos: 0 y 1,
pues la memoria de la mquina consiste en un vasto nmero de
dispositivos de registro magntico y electrnico, cada uno de los
cuales slo 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
magntico es un dgito 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 tamaos de palabra ms usuales
son los de 16 o de 32 bits). Tambin 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 nmeros
enteros y los nmeros fraccionarios, vara en funcin del diseo de
la computadora
1.4.1 Los nmeros enteros en computadora

Los nmeros enteros requieren de al menos una palabra para almacenarse dentro de
la memoria de la computadora; si el tamao 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 nmeros 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 nmero 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 sera el 32767 y el menor entero
negativo posible sera el -32767; pero la mayora de las computadoras usan el
complemento a dos para almacenar los nmeros negativos, lo cual consiste en
cambiar la interpretacin de la polaridad en los dispositivos magnticos e
incrementar en 1 el resultado obtenido; esto hace que su rango se incremente en 1,
para que sea -32768.

00000000000000002 = 0 10000000000000002 = -3276810


1.4.1 Los nmeros enteros en computadora

Los nmeros positivos se registran as:


00000000000000012 = 110 ... 01111111111111112 = 3276710
Para los nmeros negativos, la polaridad se invierte: los ceros se cambian por unos y
los unos por ceros y se le aade un 1 al resultado, de manera que su registro se
hace as:
11111111111111112 = -110 ... 10000000000000012 = -3276710
Entonces, el rango de almacenamiento de nmeros enteros decimales, en
mquinas con palabras de memoria de 16 bits es: (-32,768, 32,767),
valores ms que suficientes para lo que requiere un ingeniero.
Si el tamao 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.
1.4.1 Los nmeros enteros en computadora

Ejemplo: Representar el nmero 2834510 en sistema binario, en una palabra de 16


bits.

28345 1
14172 0
7086 0
3543 1
1771 1
885 1
2834510 = 1101110101110012
442 0
221 1
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

(+)
1.4.1 Los nmeros enteros en computadora
Ejemplo: Identificar qu nmero 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 nmero -284910 en sistema binario, en una palabra de 16 bits, usando
complemento a dos.

2849 1
1424 0
712 0
356 0
178 0
284910 = 1011001000012 -284910 = -1011001000012
89 1
44 0
22 0
11 1
5 1
2 0
1 1
0
1.4.1 Los nmeros 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 nmero 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 fcil darse cuenta que el manejo de nmeros enteros en computadora no tiene el ms mnimo
problema, siempre que los nmeros introducidos o los resultados del procesamiento no
sobrepasen el rango establecido.
1.4.2 Los nmeros reales en computadora
Las computadoras tambin manejan los nmeros reales en sistema binario, pero no pueden
hacerlo de manera exacta, porque el nmero de dgitos est limitado por el tamao de palabra de
cada mquina. La memoria de la computadora impone as una restriccin a la precisin y
exactitud de los nmeros reales, pues al registrarlos, necesariamente son redondeados,
cometiendo con ello pequeos errores. Claro que esta limitacin no es privativa de la
computadoras; en los clculos a mano o usando cualquier tipo de calculadora, tambin tenemos
que hacer redondeos.
La forma de registrar un nmero real en una computadora digital depende del diseo 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 notacin de punto flotante normalizado.
Cualquier nmero real decimal X puede ser expresado en notacin cientfica normalizada; sta
consiste en expresar el nmero como una potencia de 10, asignndole el exponente n que resulte
de desplazar el punto decimal las posiciones necesarias para que todos los dgitos significativos
del nmero en cuestin 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 nmero menor que 1 y mayor o igual que 0.1: 0.1 F < 1
y n es un entero positivo, negativo o cero: nZ

Ejemplos: 836.23810 = 0.836238 x 103


-0.0067281310 = -0.672813 x 10-2
1.4.2 Los nmeros reales en computadora
De la misma manera, aunque con valores significativos diferentes, en sistema binario
tambin se puede expresar cualquier nmero real con la notacin cientfica
normalizada, a la que en este caso se le llama notacin 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 nmero, 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 ms comn de almacenar nmeros 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
1.4.2 Los nmeros 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 nmero 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 nmeros 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 sera el 127 y el menor exponente
negativo posible sera 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 nmeros negativos, la polaridad se invierte: los ceros se cambian por unos y los unos
por ceros y se le aade un 1 al resultado, de manera que su registro se hace as:
111111112 = -110 ... 100000012 = -12710
1.4.2 Los nmeros 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 nmeros fraccionarios binarios en el rango de
0.100000000000000000000000 a 0.111111111111111111111111
El valor fraccionario ms pequeo equivale a 0.5 en decimal es: 2-1 = 0.5
El valor fraccionario ms grande equivale a 0.999999940395 en decimal:
24
2- j = 1 - 2-24 = 0.999999940395355224609375
j=1

Ahora bien, considerando simultneamente los rangos del exponente y de la


mantisa, podemos determinar el rango correspondiente a los nmeros reales:
El nmero real positivo ms pequeo que puede representarse es:
0.5 x 2-128 1.47 x 10-39
El nmero real positivo ms grande que puede representarse es:
0.999999940395355224609375 x 2127 1.70 x 1038
De manera que el rango total para los nmeros reales positivos o negativos, en este
tipo de computadora es de 1.47 x 10-39 a 1.70 x 1038.
1.4.2 Los nmeros reales en computadora

Ejemplo: Representar en sistema binario, en una palabra de 32 bits, el nmero


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 representacin 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

(+) (+)
1.2.1 Los nmeros reales en computadora

Ejemplo: Identificar el nmero 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 nmero 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 nmero 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 restndole 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 nmero en binario es: 0.12 x 2-1001 = 0.00000000012
y en decimal: 2-10 = 0.000976562510
1.4.2 Los nmeros reales en computadora

Ejercicio: Suponga que una computadora maneja palabras de 16 bits;


cul sera el resultado de sumar mil veces el nmero fraccionario
1/100? cul sera el error absoluto? Y cul 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.
1.4.2 Los nmeros 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
1.4.2 Los nmeros 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 operacin 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%


1.4.2 Los nmeros reales en computadora
No obstante el rango tan amplio de manejo, los nmeros 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 precisin y slo es posible
representarlos en forma aproximada.
Por ejemplo, si el nmero real ms pequeo 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 nmeros reales en el intervalo que est entre
0 y 1.47 x 10-39.
Si el nmero real ms grande que puede representarse es:
1.70141173319 x 1038,
y el nmero positivo inmediato menor a ste, que se puede representar es:
23

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


j=1
Entre estos dos ltimos valores, tampoco se puede representar ningn nmero real
con notacin de punto flotante en este tipo de computadora; el tamao de este
intervalo es 1.0141 x 1031, que es 6.9 x 1069 veces ms grande que el
correspondiente a valores ms pequeos: 1.47 x 10-39. Esto significa que la
distribucin de nmeros reales que pueden ser representados en una computadora
no es uniforme, sino que hay mucho mayor densidad en los valores ms pequeos
que en los ms grandes.
1.4.2 Los nmeros reales en computadora

Pareciera que la imposibilidad de las computadoras para representar


cualquier nmero real, con exactitud y precisin, se torna en un asunto
grave. No es as, ya que los "huecos" son extraordinariamente pequeos,
an en el caso ms desfavorable, correspondiente a los nmeros ms
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 dgito; esto significa, que los primeros
siete dgitos significativos nos ofrecen una confiabilidad total, ms que
sobrada para fines de ingeniera.
Para casos muy eventuales se usa el recurso de doble precisin que
ofrecen las propias computadoras y que consiste en utilizar un doble
tamao de palabra (8 bytes o 64 bits) para representar y almacenar
nmeros reales en formato de punto flotante. La desventaja de utilizar tal
recurso es el mayor consumo de memoria y el mayor tiempo de ejecucin
de los programas, los cuales, al menos, se duplican.
Aritmtica de la computadora
Cuando se usa una calculadora o computadora para hacer
clculos numricos, debe considerarse un error inevitable que
es el llamado error de redondeo. Este error se origina porque
la aritmtica realizada en una mquina involucra nmeros con
solo un nmero finito de dgitos, con el resultado de que
muchos clculos se realizan con representaciones
aproximadas de los nmeros verdaderos. En una
computadora tpica, solo un subconjunto relativamente
pequeo del sistema de los nmeros reales se usa para
representar a todos los nmeros reales. Este subconjunto
contiene solo nmeros racionales, positivos y negativos, y
almacenan una parte fraccionaria, llamada la mantisa, junto
con una parte exponencial , llamada la caracterstica.
Aritmtica de la computadora
Por ejemplo, un nmero de punto flotante en precisin simple usado
en la IBM 370 3000 consiste en:

1 dgito binario (bit) indicador del signo,

un exponente de 7 bits en base 16, y

una mantisa de 24 bits.

Como 24 bits corresponde a entre 6 y 7 dgitos decimales, podemos


suponer que este nmero tiene, por lo menos, seis cifras decimales
de precisin para el sistema de numeracin de punto flotante. El
exponente de siete bits da un rango de 0 a 127, pero debido a los
exponentes usados el rango es, realmente, entre 64 y +63, o sea
que, se resta automticamente 64 del exponente listado.
Aritmtica de la computadora
Considere por ejemplo el nmero de mquina:

0 1000010 101100110000010000000000

El bit ms a la izquierda es cero, lo cual indica que el nmero es positivo. Los


siguientes siete bits, 1000010, son equivalentes al nmero decimal:

1x26 + 0x25 + 0x24 + 0x23 + 0x22 + 1x21 + 0x20 = 66

y se usan para describir la caracterstica.

Los veinticuatro bits finales indican que la mantisa es:

1.(1/2)1 + 1.(1/2)3 + 1.(1/2)4 + 1.(1/2)7 + 1.(1/2)8 +1.(1/2)14

en consecuencia, este nmero de mquina representa precisamente al nmero


decimal:

+ (1/2)1 + (1/2)3 + (1/2)4 + (1/2)7 + (1/2)8 + (1/2)14 1666-64 = 179.015625.


Aritmtica de la computadora

Sin embargo, el siguiente nmero ms pequeo de la computadora es:

0 1000010 101100110000001111111111 = 179.0156097412109375


Y el siguiente nmero ms grande es:

0 1000010 101100110000010000000001 = 179.0156402587890625

Esto significa que nuestro nmero de mquina original debe representar no


solamente a 179.015625, sino a un nmero infinito de nmeros reales que estn
entre este nmero y sus nmeros de mquina ms cercanos. para ser ms
precisos, el nmero de mquina original se usa para representar cualquier
nmero real en el intervalo:

179.01561737060546875 179.01563262939453125
Aritmtica de la computadora
Para asegurar la unicidad de la representacin y obtener toda la precisin disponible
se requiere se requiere que uno de los 4 bits ms a la izquierda de la mantisa de un
nmero de mquina sea uno. Consecuentemente el sistema usa 15 x 228 nmeros
de la forma:

0.d1 d2 d3 d24 x 16 e1e2e3e7

Para representar a todos los nmeros reales. Este requisito implica tambin que
numero de mquina ms pequeo es:

0 0000000 000100000000000000000000 = 16-65 10-78


Mientras que el ms grande es:

0 1111111 111111111111111111111111 = 1663 1076

Los nmeros que tienen una magnitud menor que 16-65 , que aparecen en los
clculos resulta en lo que se llama underflow y generalmente se les da el valor
cero, mientras que los nmeros mayores que 1663 resulta en lo que se llama
overflow y causa que los clculos se detengan.
psilon de una computadora

Se define como psilon de una mquina al valor absoluto de la


diferencia entre 1 y el menor nmero mayor que 1, pero distinguible
de 1, que puede ser representado en la computadora. Para la
mquina que hemos analizado anteriormente, el nmero ms
pequeo mayor que uno es:
0.100000000000000000000001 x 21 = (2-1 + 2-24) x 21 =
= 1.0000001192110
por lo que el psilon de esta mquina es:
1.00000011921 - 1 = 0.00000011921 1.19 x 10-7
Evidentemente, mientras menor sea el psilon de una mquina,
mayor es el conjunto de nmeros que puede representar en formato
de punto flotante.
psilon de una computadora

Ejemplo: Considere una computadora que utiliza palabras de memoria de


16 bits para almacenar nmeros 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 estn
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 podra representar y almacenar esta
computadora hipottica.
b) calcular el psilon correspondiente a esta mquina.
psilon de una computadora
a) Los 6 bits destinados al exponente se usan para registrar nmeros enteros binarios
en el rango de 000000 a 111111. Su signo se controla por separado. El mayor
exponente positivo posible sera: 26 - 1 = 63 y el menor exponente negativo posible sera
el -64, por la aplicacin del complemento a dos.
Los 8 bits reservados para la mantisa se usan para registrar nmeros fraccionarios en el
rango de 0.100000000 a 0.111111111. El valor fraccionario ms pequeo equivale a 0.5
en decimal y el valor fraccionario ms grande equivale a 0.998134375 en decimal:
9

2-j = 1 - 2-9 = 0.998046875


j=1

Entonces, el nmero real ms pequeo que puede representarse es:


0.5 x 2-64 2.71 x 10-20
y el nmero real ms grande, que puede representarse es:
0.998046875 x 263 9.21 x 1018
b) El nmero ms pequeo mayor que uno, que podra almacenarse es:
0.100000001 x 21 = (2-1 + 2-9) x 21 = 1.0039312510
por lo que el psilon de esta mquina sera:
1.00393125 - 1 = 0.00393125 = 3.93 x 10-3

S-ar putea să vă placă și