26
MÉTODOS NUMÉRICOS MÉTODOS NUMÉRICOS 1.4 1.4 Aritmética de la computadora Aritmética de la computadora Gustavo Rocha Gustavo Rocha 2005-2 2005-2

MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

Embed Size (px)

Citation preview

Page 1: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

MÉTODOS NUMÉRICOSMÉTODOS NUMÉRICOS1.41.4 Aritmética de la computadoraAritmética de la computadora

Gustavo RochaGustavo Rocha

2005-22005-2

Page 2: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

Aritmética de la computadoraAritmética de la computadora

Page 3: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4 Aritmética de la computadora1.4 Aritmética de la computadora

El usuario se comunica con la computadora en sistema decimal, es El usuario se comunica con la computadora en sistema decimal, es

decir, introduce en ella y extrae de ella números en base decimal. 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 Al recibir los datos, para poder trabajar con ellos, la computadora los

convierte al sistema binario, su lenguaje natural de operación. convierte al sistema binario, su lenguaje natural de operación.

Todas las operaciones se efectúan en binario y los resultados Todas las operaciones se efectúan en binario y los resultados

obtenidos, antes de ser entregados al usuario, la máquina los obtenidos, antes de ser entregados al usuario, la máquina los

convierte al sistema decimal. Claro está que la computadora realiza convierte al sistema decimal. Claro está que la computadora realiza

estos procesos a enormes velocidades, de manera que el usuario ni estos procesos a enormes velocidades, de manera que el usuario ni

se entera de lo que sucede ahí dentro.se entera de lo que sucede ahí dentro.

Sin embargo, al efectuar las conversiones y realizar los cálculos se Sin embargo, al efectuar las conversiones y realizar los cálculos se

suscitan pequeños errores que, si no se prevén, pueden propagarse suscitan pequeños errores que, si no se prevén, pueden propagarse

y arrojar resultados muy inexactos o totalmente absurdos. Por eso y arrojar resultados muy inexactos o totalmente absurdos. Por eso

es tan importante el entender la aritmética de las computadoras e es tan importante el entender la aritmética de las computadoras e

identificar las situaciones en que pueden ocurrir errores severos.identificar las situaciones en que pueden ocurrir errores severos.

Page 4: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4 Aritmética de la computadora1.4 Aritmética de la computadora

La operación interna de una computadora se basa en la aritmética 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, 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 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 dispositivos de registro magnético y electrónico, cada uno de los cuales sólo puede presentar uno de dos posibles estados: cuales sólo puede presentar uno de dos posibles estados: magnetizado en un sentido, representando al cero, o magnetizado magnetizado en un sentido, representando al cero, o magnetizado en el otro sentido, representando al uno. Cada dispositivo en el otro sentido, representando al uno. Cada dispositivo magnético es un dígito binario, denominado magnético es un dígito binario, denominado bit bit (abreviatura de (abreviatura de "binary digit")."binary digit").Los bits se agrupan en unidades llamadas palabras, las cuales Los bits se agrupan en unidades llamadas palabras, las cuales pueden contener 8, 16, 32 o 64 bits, dependiendo de la pueden contener 8, 16, 32 o 64 bits, dependiendo de la computadora de que se trate (los tamaños de palabra más usuales 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 son los de 16 o de 32 bits). También se utilizan otras unidades denominadas denominadas bytesbytes, constituidos generalmente por 8 bits, y , constituidos generalmente por 8 bits, y utilizados como particiones de palabras, para representar utilizados como particiones de palabras, para representar caracteres. Así, por ejemplo, una palabra de 32 bits consta de 4 caracteres. Así, por ejemplo, una palabra de 32 bits consta de 4 bytes.bytes.La manera en que se usan los bits para registrar los números 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 enteros y los números fraccionarios, varía en función del diseño de la computadorala computadora

Page 5: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4.1 Los números enteros en computadora1.4.1 Los números enteros en computadora

Los números enteros requieren de al menos una palabra para almacenarse dentro de 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 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 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 bits restantes se usan para registrar números enteros binarios en el rango de 000000000000000 a 111111111111111.000000000000000 a 111111111111111.

nn11 nn22 nn33 nn44 nn55 nn66 nn77 nn88 nn99 nn1010 nn1111 nn1212 nn1313 nn1414 nn1515

Al convertir el número binario 111111111111111 a sistema decimal, se obtienen las Al convertir el número binario 111111111111111 a sistema decimal, se obtienen las cotas inferior y superior en sistema decimal:cotas inferior y superior en sistema decimal:

221414 + 2 + 21313 + 2 + 21212 + 2 + 21111 + 2 + 21010 + 2 + 299 + 2 + 288 + 2 + 277 + 2 + 266 + 2 + 255 + 2 + 244 + 2 + 233 + 2 + 222 + 2 + 211 + 2 + 200 = 2 = 21515 - 1 = - 1 =

3276732767

Conforme a esto, el mayor entero positivo posible sería el 32767 y el menor entero 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 negativo posible sería el -32767; pero la mayoría de las computadoras usan el complemento a doscomplemento a dos para almacenar los números negativos, lo cual consiste en para almacenar los números negativos, lo cual consiste en cambiar la interpretación de la polaridad en los dispositivos magnéticos e incrementar 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 -en 1 el resultado obtenido; esto hace que su rango se incremente en 1, para que sea -32768.32768.

0000000000000000000000000000000022 = 0 1000000000000000 = 0 100000000000000022 = -32768 = -327681010

Page 6: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4.1 Los números enteros en computadora1.4.1 Los números enteros en computadora

Page 7: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4.1 Los números enteros en computadora1.4.1 Los números enteros en computadora

Los números positivos se registran así:Los números positivos se registran así:

0000000000000001000000000000000122 = 1 = 11010 ... 0111111111111111... 011111111111111122 = 32767 = 327671010

Para los números negativos, la polaridad se invierte: los ceros se cambian por unos y 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 los unos por ceros y se le añade un 1 al resultado, de manera que su registro se

hace así:hace así:

1111111111111111111111111111111122 = -1 = -11010 ... 1000000000000001... 100000000000000122 = -32767 = -327671010

Entonces, el rango de almacenamiento de números enteros decimales, en 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), 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.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 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 campo correspondiente es conocido como entero largo, pues el rango se

incrementa sustancialmente: (-2’147,483,648, 2’147,483,647), obtenido de incrementa sustancialmente: (-2’147,483,648, 2’147,483,647), obtenido de

223131 – 1, con complemento a dos. – 1, con complemento a dos.

Page 8: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4.1 Los números enteros en computadora1.4.1 Los números enteros en computadora

Ejemplo: Representar el número 28345Ejemplo: Representar el número 283451010 en sistema binario, en una palabra de 16 en sistema binario, en una palabra de 16 bits.bits.2834528345 111417214172 00 70867086 00 35433543 11 17711771 11 885885 11 442442 00 221221 11 110110 00 5555 11 2727 11 1313 11 66 00 33 11 11 11 00

00 11 11 00 11 11 11 00 11 00 11 11 11 00 00 11

(+)(+)

28345283451010 = 110111010111001 = 11011101011100122

Page 9: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4.1 Los números enteros en computadora1.4.1 Los números enteros en computadora

Ejemplo: Identificar qué número entero decimal está representado en la siguiente palabra de 16 Ejemplo: Identificar qué número entero decimal está representado en la siguiente palabra de 16 bits.bits.

00 00 00 00 00 11 11 00 11 11 11 11 11 00 11 00

(+)(+)

221010 + 2 + 299 + 2 + 277 + 2 + 266 + 2 + 255 + 2 + 244 + 2 + 233 + 2 + 211 = 1786 = 17861010

Ejemplo: Representar el número -2849Ejemplo: Representar el número -28491010 en sistema binario, en una palabra de 16 bits, usando en sistema binario, en una palabra de 16 bits, usando complemento a dos.complemento a dos.

28492849 1114241424 00 712712 00 356356 00 178178 00 8989 11 4444 00 2222 00 1111 11 55 11 22 00 11 11 00

284928491010 = 101100100001 = 10110010000122 -2849-28491010 = -101100100001 = -10110010000122

Page 10: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4.1 Los números enteros en computadora1.4.1 Los números enteros en computadora

11 11 11 11 00 11 00 00 11 11 00 11 11 11 11 11

(-)(-)

11 11 11 11 00 11 00 00 11 11 00 11 11 11 11 11

– Complementamos el valor a 15 caracteres:Complementamos el valor a 15 caracteres: 00010110010000100010110010000122

– Cambiamos la polaridad:Cambiamos la polaridad: 11101001101111011101001101111022

– Le sumamos 1:Le sumamos 1: 11101001101111111101001101111122

Ejemplo: Identificar qué número entero decimal está representado en la siguiente palabra de 16 Ejemplo: Identificar qué número entero decimal está representado en la siguiente palabra de 16 bits, usando complemento a dos.bits, usando complemento a dos.

– El valor sin signo en 15 caracteres es:El valor sin signo en 15 caracteres es: 11101100101001111101100101001122

– Le restamos 1:Le restamos 1: 11101100101001011101100101001022

– Cambiamos la polaridad:Cambiamos la polaridad: 00010011010110100010011010110122

- (211 + 28 + 27 + 25 + 23 + 22 + 20) = -2477- (211 + 28 + 27 + 25 + 23 + 22 + 20) = -24771010

Es fácil darse cuenta que el manejo de números enteros en computadora no tiene el más mínimo 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 problema, siempre que los números introducidos o los resultados del procesamiento no sobrepasen el rango establecido.sobrepasen el rango establecido.

(-)(-)

Page 11: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4.2 Los números reales en computadora1.4.2 Los números reales en computadora

Las computadoras también manejan los números reales en sistema binario, pero no pueden 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 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 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, 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 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 computadoras; en los cálculos a mano o usando cualquier tipo de calculadora, también tenemos que hacer redondeos.que hacer redondeos.

La forma de registrar un número real en una computadora digital depende del diseño del La forma de registrar un número real en una computadora digital depende del diseño del hardwarehardware y del y del softwaresoftware; sin embargo, el formato es del mismo tipo en todos los casos y se ; 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.basa en el principio de utilizar la notación de punto flotante normalizado.

Cualquier número real decimal Cualquier número real decimal XX puede ser expresado en puede ser expresado en notación científica normalizadanotación científica normalizada; ; ésta consiste en expresar el número como una potencia de 10, asignándole el exponente n que é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 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, significativos del número en cuestión queden inmediatamente a la derecha del punto, garantizando que el primero de ellos sea diferente de cero:garantizando que el primero de ellos sea diferente de cero:

X = F x 10X = F x 10nn

donde F es un número menor que 1 y mayor o igual que 0.1: donde F es un número menor que 1 y mayor o igual que 0.1: 0.1 0.1 F < 1 F < 1

y n es un entero positivo, negativo o cero: n y n es un entero positivo, negativo o cero: n Z Z

Ejemplos: Ejemplos: 836.238836.2381010 = 0.836238 x 10 = 0.836238 x 1033

-0.00672813-0.006728131010 = -0.672813 x 10 = -0.672813 x 10-2-2

Page 12: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4.2 Los números reales en computadora1.4.2 Los números reales en computadora

De la misma manera, aunque con valores significativos diferentes, en sistema binario 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 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 normalizada, a la que en este caso se le llama notación de punto flotante notación de punto flotante normalizado.normalizado.

X = G x 2X = G x 2mm

donde el exponente m es un entero positivo, negativo o cero, expresado en binario, y 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.1G es la mantisa del número, la cual debe ser menor que 1 y mayor o igual que 0.122 (ó (ó 0.50.51010).).

Por ejemplo: Por ejemplo: 11111.0111111.0122 = 0.1111101 = 0.111110122 x 2 x 2101101

-0.00000011101101-0.0000001110110122 = 0.11101101 = 0.1110110122 x 2 x 2-110-110

La manera más común de almacenar números reales en una PC es utilizando 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:palabras de 32 bits (4 bytes), distribuidos como sigue:

1 bit para el signo de la mantisa,1 bit para el signo de la mantisa,1 bit para el signo del exponente,1 bit para el signo del exponente,7 bits para el exponente entero, expresado en binario7 bits para el exponente entero, expresado en binario 23 bits para la mantisa, expresada en binario23 bits para la mantisa, expresada en binario

0.1mmmmmmmmmmmmmmmmmmmmmmm x 2 0.1mmmmmmmmmmmmmmmmmmmmmmm x 2 eeeeeeeeeeeeee

m = 0, 1m = 0, 1 ;; e = 0, 1e = 0, 1

Page 13: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

Números realesNúmeros reales

Page 14: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4.2 Los números reales en computadora1.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 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 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.veinticuatroavo caracter del número binario en punto flotante.

ee ee ee ee ee ee ee mm mm mm mm mm mm mm mm mm mm mm mm mm mm mm mm mm mm mm mm mm mm mm

Los 7 bits destinados al exponente se usan para registrar números enteros binarios en el rango 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 (de 0000000 a 1111111. Su signo se controla por separado (distinguido en rojodistinguido en rojo).).

Conforme a esto, el mayor exponente positivo posible sería el 127 y el menor exponente 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 negativo posible sería el -127; pero usando el complemento a dos, su rango se incrementa en

1, para que sea -128.1, para que sea -128.

Los exponentes positivos se registran así:Los exponentes positivos se registran así:

000000001000000122 = 1 = 11010 ...... 001111111111111122 = 127 = 1271010

Para los números negativos, la polaridad se invierte: los ceros se cambian por unos y los unos 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í:por ceros y se le añade un 1 al resultado, de manera que su registro se hace así:

111111111111111122 = -1 = -11010 ...... 110000001000000122 = -127 = -1271010

Page 15: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4.2 Los números reales en computadora1.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 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 guarda y los 23 bits reservados que si quedan almacenados. Entonces, se pueden registrar números fraccionarios binarios en el rango de registrar números fraccionarios binarios en el rango de 0.100000000000000000000000 a 0.111111111111111111111111 0.100000000000000000000000 a 0.111111111111111111111111

– El valor fraccionario más pequeño equivale a 0.5 en decimal es: 2El valor fraccionario más pequeño equivale a 0.5 en decimal es: 2 -1-1 = 0.5 = 0.5

– El valor fraccionario más grande equivale a 0.999999940395 en decimal:El valor fraccionario más grande equivale a 0.999999940395 en decimal:

2424

22- j- j = 1 - 2 = 1 - 2-24-24 = 0.999999940395355224609375 = 0.999999940395355224609375j=1j=1

Ahora bien, considerando simultáneamente los rangos del exponente y de la Ahora bien, considerando simultáneamente los rangos del exponente y de la mantisa, podemos determinar el rango correspondiente a los números reales:mantisa, podemos determinar el rango correspondiente a los números reales:

– El número real positivo más pequeño que puede representarse es:El número real positivo más pequeño que puede representarse es:

0.5 x 20.5 x 2-128-128 1.47 x 10 1.47 x 10-39-39

– El número real positivo más grande que puede representarse es: El número real positivo más grande que puede representarse es:

0.999999940395355224609375 0.999999940395355224609375 x 2x 2127127 1.70 x 10 1.70 x 103838

De manera que el rango total para los números reales positivos o negativos, en este De manera que el rango total para los números reales positivos o negativos, en este tipo de computadora es de 1.47 x 10tipo de computadora es de 1.47 x 10-39-39 a 1.70 x 10 a 1.70 x 103838..

Page 16: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4.2 Los números reales en computadora1.4.2 Los números reales en computadora

Ejemplo: Representar en sistema binario, en una palabra de 32 bits, el número Ejemplo: Representar en sistema binario, en una palabra de 32 bits, el número 31.2531.251010

31.2531.251010 = 0.3125 = 0.31251010 x 10 x 1022 = 0.3125 = 0.31251010 x 100 x 1001010

0.3125 0.3125 100100 000.6250 0.6250 00 50 50 000.2500 0.2500 11 25 25 110.5000 0.5000 00 12 12 000.0000 0.0000 11 6 6 00

33 11 11 11

0 0

31.2531.251010 = 0.0101 = 0.010122 x 1100100 x 110010022 = 11111.01 = 11111.0122 = 0.1111101 = 0.111110122 x 2 x 2101101

Recordando que el primer 1 de la mantisa no se almacena, la representación queda:Recordando que el primer 1 de la mantisa no se almacena, la representación queda:

00 00 00 00 00 00 11 00 11 11 11 11 11 00 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

(+) (+)

Page 17: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.2.1 Los números reales en computadora1.2.1 Los números reales en computadora

Ejemplo: Identificar el número real decimal que está representado en la siguiente Ejemplo: Identificar el número real decimal que está representado en la siguiente palabra de 32 bits:palabra de 32 bits:

00 00 00 00 00 00 11 00 11 00 00 00 00 11 11 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 11 11 11 11 00 11 11 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Recordando que el primer uno no está representado, el número en binario es:Recordando que el primer uno no está representado, el número en binario es:

0.100001110.1000011122 x 2 x 2101101 = 10000.111 = 10000.11122

2244 + 2 + 2-1-1 + 2 + 2-2-2 + 2 + 2-3-3 = 16 + 0.5 + 0.25 + 0.125 = 16.875 = 16 + 0.5 + 0.25 + 0.125 = 16.8751010

Ejemplo: Identificar el número real decimal que está representado en la siguiente Ejemplo: Identificar el número real decimal que está representado en la siguiente palabra de 32 bits:palabra de 32 bits:

(+) (+)

(+) (-)

Dado que el exponente es negativo, le aplicamos el inverso del complemento a dos: primero Dado que el exponente es negativo, le aplicamos el inverso del complemento a dos: primero restándole 1 y luego cambiando la polaridad:restándole 1 y luego cambiando la polaridad:

1110111111011122 - 1 - 122 = 1110110 = 111011022 ~~ 0001001 000100122 , con lo que el exponente es: , con lo que el exponente es: -1001-100122

Recordando que el primer 1 no está representado, la mantisa es: 0.1Recordando que el primer 1 no está representado, la mantisa es: 0.122

El número en binario es: 0.1El número en binario es: 0.122 x 2 x 2-1001-1001 = 0.0000000001 = 0.000000000122

y en decimal:y en decimal: 22-10-10 = 0.0009765625 = 0.00097656251010

Page 18: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4.2 Los números reales en computadora1.4.2 Los números reales en computadora

Ejemplo: Representar en sistema binario, en una palabra de 32 bits, el número -Ejemplo: Representar en sistema binario, en una palabra de 32 bits, el número -0.000721619100.00072161910Requerimos de 25 cifras, a partir del primer 1 (24 a conservar y 1 para redondear)Requerimos de 25 cifras, a partir del primer 1 (24 a conservar y 1 para redondear)

0.0007216190.000721619 0.1680911360.168091136 110.0014432380.001443238 00 0.3361822720.336182272 000.0028864760.002886476 00 0.6723645440.672364544 000.0057729520.005772952 00 0.3447290880.344729088 110.0115459040.011545904 00 0.6894581760.689458176 000.0230918080.023091808 00 0.3789163520.378916352 110.0461836160.046183616 00 0.7578327040.757832704 000.0923672320.092367232 00 0.5156654080.515665408 110.1847344640.184734464 00 0.0313308160.031330816 110.3694689280.369468928 00 0.0626616320.062661632 000.7389378560.738937856 00 0.1253232640.125323264 000.4778757120.477875712 11 0.2506465280.250646528 000.9557514240.955751424 00 0.5012930560.501293056 000.9115028480.911502848 11 0.0025861120.002586112 110.8230056960.823005696 11 0.0051722240.005172224 000.6460113920.646011392 11 0.0103444480.010344448 000.2920227840.292022784 11 0.0206888960.020688896 000.5840455680.584045568 00 0.0413777920.041377792 00

Page 19: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4.2 Los números reales en computadora1.4.2 Los números reales en computadora

La última cifra nos sirve para redondear la penúltima.La última cifra nos sirve para redondear la penúltima.

- 0.000721619- 0.0007216191010 = - 0.0000000000101111010010101100001000 = - 0.000000000010111101001010110000100022

= - 0.101111010010101100001000= - 0.10111101001010110000100022 x 2 x 2-1011-1011

Por ser un exponente negativo, le aplicamos el complemento a dos: primero 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: complementándolo a 7 cifras, luego invirtiendo la polaridad y finalmente sumándole un 1:

0001011000101122 1110100111010022 + 1 + 122 = 1110101 = 111010122

Recordando que el primer 1 de la mantisa no se almacena, la representación queda:Recordando que el primer 1 de la mantisa no se almacena, la representación queda:

11 11 11 11 11 00 11 00 11 00 11 11 11 11 00 11 00 00 11 00 11 00 11 11 00 00 00 00 11 00 00 00

(-) (-)

Ejemplo: Ejemplo: Suponga que una computadora maneja palabras de 16 bits; ¿cuál sería el 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 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 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 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 traduce a decimal. Considere los dos bits para los signos, cinco bits para el exponente y

nueve espacios para la mantisa.nueve espacios para la mantisa.

Page 20: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4.2 Los números reales en computadora1.4.2 Los números reales en computadora

0.010.01

0.020.02 00

0.040.04 00

0.080.08 00

0.160.16 00

0.320.32 00

0.640.64 00

0.280.28 11

0.560.56 00

0.120.12 11

0.240.24 00

0.480.48 00

0.960.96 00

0.920.92 11

0.840.84 11

0.680.68 11

0.360.36 11

1/100 = 0.0110 = 0.00000010100011112 = 0.10100011112 x 2-110

1000 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

Page 21: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4.2 Los números reales en computadora1.4.2 Los números reales en computadora

El resultado exacto del producto anterior es, en binario:El resultado exacto del producto anterior es, en binario:

1001111100.10111000 x 21001111100.10111000 x 2-110-110

Cifra que redondeada a 10 bits, en formato de punto flotante, queda expresada:Cifra que redondeada a 10 bits, en formato de punto flotante, queda expresada:

1001.111101 = 0.1001111101 x 21001.111101 = 0.1001111101 x 2100100

Este resultado en binario, traducido a decimal da:Este resultado en binario, traducido a decimal da:

=(0.50+0.0625+0.03125+0.015625+0.0078125+0.00390625+0.0009765625) x 2=(0.50+0.0625+0.03125+0.015625+0.0078125+0.00390625+0.0009765625) x 2100100

= 0.6220703125 x 16 = 9.953125= 0.6220703125 x 16 = 9.9531251010

El verdadero valor de la operación es: 1/100 x 1000 = 10El verdadero valor de la operación es: 1/100 x 1000 = 10

El error absoluto cometido es: E = El error absoluto cometido es: E = 10 – 9.953125 10 – 9.953125 = 0.046875 = 0.046875

El error relativo es: e = 0.046875/10 = 0.0046875 ;El error relativo es: e = 0.046875/10 = 0.0046875 ; e = 0.47%e = 0.47%

Page 22: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4.2 Los números reales en computadora1.4.2 Los números reales en computadora

No obstante el rango tan amplio de manejo, los números reales no corresponden a 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 un continuo en la computadora, sino que hay un conjunto finito de valores discretizados, que pueden ser representados de manera perfecta, mientras que el 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 resto no pueden ser expresados con exactitud y precisión y sólo es posible representarlos en forma aproximada.representarlos en forma aproximada.Por ejemplo, si el número real más pequeño que puede representarse en una Por ejemplo, si el número real más pequeño que puede representarse en una computadora como la descrita anteriormente es:computadora como la descrita anteriormente es:

0.5 x 20.5 x 2-128-128 1.47 x 10 1.47 x 10-39-39, , significa que no se pueden representar números reales en el intervalo que está entre significa que no se pueden representar números reales en el intervalo que está entre 0 y 1.47 x 100 y 1.47 x 10-39-39..Si el número real más grande que puede representarse es:Si el número real más grande que puede representarse es:

1.70141173319 x 101.70141173319 x 103838,,y el número positivo inmediato menor a éste, que se puede representar es:y el número positivo inmediato menor a éste, que se puede representar es:

2323

( ( 22-j-j ) x 2 ) x 2127127 = (1 - 2 = (1 - 2-23-23) x 2) x 2127127 1.70141163178 x 10 1.70141163178 x 103838 ; ;j=1j=1

Entre estos dos últimos valores, tampoco se puede representar ningún número real 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 con notación de punto flotante en este tipo de computadora; el tamaño de este intervalo es 1.0141 x 10intervalo es 1.0141 x 103131, que es 6.9 x 10, que es 6.9 x 106969 veces más grande que el veces más grande que el correspondiente a valores más pequeños: 1.47 x 10correspondiente a valores más pequeños: 1.47 x 10-39-39. Esto significa que la . Esto significa que la distribución de números reales que pueden ser representados en una computadora 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 no es uniforme, sino que hay mucho mayor densidad en los valores más pequeños que en los más grandes.que en los más grandes.

Page 23: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

1.4.2 Los números reales en computadora1.4.2 Los números reales en computadora

Pareciera que la imposibilidad de las computadoras para representar Pareciera que la imposibilidad de las computadoras para representar cualquier número real, con exactitud y precisión, se torna en un asunto 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, 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 aún en el caso más desfavorable, correspondiente a los números más grandes. Si comparamos éstos: 1.70141163178 x 10grandes. Si comparamos éstos: 1.70141163178 x 103838 y 1.70141173319 x y 1.70141173319 x 10103838, vemos que son realmente muy cercanos: la primera diferencia entre , vemos que son realmente muy cercanos: la primera diferencia entre ellos se presenta hasta el octavo dígito; esto significa, que los primeros 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 siete dígitos significativos nos ofrecen una confiabilidad total, más que sobrada para fines de ingeniería.sobrada para fines de ingeniería.

Para casos muy eventuales se usa el recurso de doble precisión que Para casos muy eventuales se usa el recurso de doble precisión que ofrecen las propias computadoras y que consiste en utilizar un doble ofrecen las propias computadoras y que consiste en utilizar un doble tamaño de palabra (8 bytes o 64 bits) para representar y almacenar 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 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 recurso es el mayor consumo de memoria y el mayor tiempo de ejecución de los programas, los cuales, al menos, se duplican.de los programas, los cuales, al menos, se duplican.

Page 24: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

Épsilon de una computadoraÉpsilon de una computadora

Se define como Se define como épsilon de una máquinaépsilon de una máquina al valor absoluto de la al valor absoluto de la diferencia entre 1 y el menor número mayor que 1, pero distinguible diferencia entre 1 y el menor número mayor que 1, pero distinguible de 1, que puede ser representado en la computadora. Para la de 1, que puede ser representado en la computadora. Para la máquina que hemos analizado anteriormente, el número más máquina que hemos analizado anteriormente, el número más pequeño mayor que uno es:pequeño mayor que uno es:

0.100000000000000000000001 x 20.100000000000000000000001 x 211 = (2 = (2-1-1 + 2 + 2-24-24) x 2) x 211 = = = 1.00000011921= 1.000000119211010

por lo que el épsilon de esta máquina es:por lo que el épsilon de esta máquina es:

1.00000011921 - 1 = 0.00000011921 1.00000011921 - 1 = 0.00000011921 1.19 x 10 1.19 x 10-7-7

Evidentemente, mientras menor sea el épsilon de una máquina, Evidentemente, mientras menor sea el épsilon de una máquina, mayor es el conjunto de números que puede representar en formato mayor es el conjunto de números que puede representar en formato de punto flotante.de punto flotante.

Page 25: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

Épsilon de una computadoraÉpsilon de una computadora

Ejemplo: Considere una computadora que utiliza palabras de memoria de Ejemplo: Considere una computadora que utiliza palabras de memoria de

16 bits para almacenar números reales en formato de punto flotante, 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 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 complemento a dos a los exponentes negativos. Si los 16 bits están

distribuidos como sigue:distribuidos como sigue:

1 bit para el signo de la mantisa,1 bit para el signo de la mantisa,

1 bit para el signo del exponente,1 bit para el signo del exponente,

6 bits para el exponente entero, expresado en binario6 bits para el exponente entero, expresado en binario

8 bits para la mantisa, expresada en binario8 bits para la mantisa, expresada en binario

a)a) determinar el rango de valores que podría representar y almacenar determinar el rango de valores que podría representar y almacenar

esta computadora hipotética.esta computadora hipotética.

b)b) calcular el épsilon correspondiente a esta máquina.calcular el épsilon correspondiente a esta máquina.

Page 26: MÉTODOS NUMÉRICOS 1.4 Aritmética de la computadora Gustavo Rocha 2005-2

Épsilon de una computadoraÉpsilon de una computadoraa)a) Los 6 bits destinados al exponente se usan para registrar números enteros binarios 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 en el rango de 000000 a 111111. Su signo se controla por separado. El mayor exponente positivo posible sería: 2exponente positivo posible sería: 266 - 1 = 63 y el menor exponente negativo posible sería - 1 = 63 y el menor exponente negativo posible sería el -64, por la aplicación del complemento a dos.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 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 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:en decimal y el valor fraccionario más grande equivale a 0.998134375 en decimal:

99

22-j -j = 1 - 2= 1 - 2-9-9 = 0.998046875 = 0.998046875j=1j=1

Entonces, el número real más pequeño que puede representarse es:Entonces, el número real más pequeño que puede representarse es:

0.5 x 20.5 x 2-64-64 2.71 x 10 2.71 x 10-20-20

y el número real más grande, que puede representarse es: y el número real más grande, que puede representarse es:

0.998046875 x 20.998046875 x 26363 9.21 x 10 9.21 x 101818

b)b) El número más pequeño mayor que uno, que podría almacenarse es:El número más pequeño mayor que uno, que podría almacenarse es:

0.100000001 x 20.100000001 x 211 = (2 = (2-1-1 + 2 + 2-9-9) x 2) x 211 = 1.00393125 = 1.003931251010

por lo que el épsilon de esta máquina sería:por lo que el épsilon de esta máquina sería:

1.00393125 - 1 = 0.00393125 = 3.93 x 101.00393125 - 1 = 0.00393125 = 3.93 x 10-3-3