M - PowerPoint PPT Presentation

1 / 26
About This Presentation
Title:

M

Description:

M TODOS NUM RICOS 1.4 Aritm tica de la computadora Gustavo Rocha 2005-2 Aritm tica de la computadora 1.4 Aritm tica de la computadora El usuario se comunica con ... – PowerPoint PPT presentation

Number of Views:34
Avg rating:3.0/5.0
Slides: 27
Provided by: GustavoRo76
Category:
Tags: palabras | siete

less

Transcript and Presenter's Notes

Title: M


1
MÉTODOS NUMÉRICOS1.4 Aritmética de la computadora
  • Gustavo Rocha
  • 2005-2

2
Aritmética de la computadora
3
1.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.

4
1.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

5
1.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

6
1.4.1 Los números enteros en computadora
7
1.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.

8
1.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
()
9
1.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
10
1.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.

11
1.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

12
1.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

13
Números reales
14
1.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

15
1.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.

16
1.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
() ()
17
1.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
18
1.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

19
1.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.
20
1.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
21
1.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

22
1.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.

23
1.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
Write a Comment
User Comments (0)
About PowerShow.com