Sie sind auf Seite 1von 47

Un diseñador de computadoras elige el método para representar

la información en una computadora basándose en la evaluación de costos y


velocidad y en ocasiones en la exactitud y conveniencia del
programador. Después elige el diseño de computadora que tenga
operaciones para manejar información de dichas
representaciones. Normalmente, sólo se usa una única representación para
datos de carácter (aunque algunas computadoras proporcionan
representaciones tanto ASCII como EBCDIC). Sin embargo, para una amplia
gama de problemas, de manera que las computadoras con frecuencia tiene
más de una forma de representación numérica. Lo común es que existan
representaciones binarias enteras y de punto flotante y tal vez también
representaciones de cadenas de caracteres decimales. Deben
proporcionarse instrucciones diferentes para cada forma de número que se
maneje.
En una computadora, todas las operaciones son hechas a partir de tomadas de decisiones que, por
mas complejas que sean, nada mas son que combinaciones de las tres operaciones lógicas
correspondientes a las condiciones arriba descritas: NOT, AND y OR. Para tomadas de decisiones más
complejas, todo lo necesario es combinar estas operaciones. Y para eso es necesario un conjunto de
herramientas capaz de manejar variables lógicas.

Ese conjunto de herramientas es la llamada "Álgebra Booleana"

Ahora sí, nos permitimos darle a conocer los siguientes sistemas de


numeración:

 Binario {0,1}
 Decimal {0,1,2,3,4,5,6,7,8,9}
 Octal {0,1,2,3,4,5,6,7}
 Hexadecimal {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}

El más conocido y usado comúnmente es el sistema de numeración decimal,


pero en computación los más utilizados son: el binario para efectuar
operaciones aritméticas, el octal y hexadecimal para efectuar códigos
intermedios que resultan más favorables que convertir decimales a binarios o al
contrario. Esto lo comprobará usted mismo con las explicaciones dadas más
adelante.

https://metodosnumericosuip.wordpress.com/1-1arit-y-punto-fijo-flot/

https://metodosnumericosuip.wordpress.com/2016/10/06/178/amp/
Saltar al contenido

EN ESTE BLOG HABLAREMOS EN MANERA DIDÁCTICA SOBRE


DIFERENTES TÉCNICAS Y MÉTODOS NUMÉRICOS PARA EL
DESARROLLO DE OPERACIONES Y EJERCICIO.
METÓDOS NUMÉRICOS
MENÚ
Buscar:

TEMAS
 Metódos Numéricos

 Representación Interna de Números

 1.1 Aritmética del punto flotante

 II. Teoria de Error

 COMPLEMENTO RADICAL DISMINUIDO


COMENTARIOS RECIENTES
ARCHIVOS
 octubre 2016

 septiembre 2016
CATEGORÍAS
 Matemáticas
 Senza categoria
I. 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.
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.
ARITMÉTICA DE PUNTO FIJO
Un entero se puede representar empleando todos los bits de una palabra de
computadora, con la salvedad de que se debe reservar un bit para el signo. Por
ejemplo, en una máquina con longitud de palabra de 32 bits, los enteros están
comprendidos entre -(231 – 1) y 231 – 1 = 2147483647. Un número representado
en formato entero es ‘exacto’. Las operaciones aritméticas entre números
enteros son también ‘exactas’ siempre y cuando:

1. La solución no esté fuera del rango del número entero más grande o más pequeño
que se puede representar (generalmente con signo). En estos casos se dice que se
comete un error de desbordamiento por exceso o por defecto (en
inglés: Overflow y Underflow) y es necesario recurrir a técnicas de escalado para
llevar a cabo las operaciones.

2.La división se interpreta que da lugar a un número entero, despreciando


cualquier resto.
Por estos motivos, la aritmética de punto fijo se emplea muy raramente en
cálculos no triviales.
Las operaciones aritméticas con número en base r (un número de base r
contiene los dígitos 0, 1, 2,…, r-1) siguen las mismas reglas que los números
decimales. Cuando se usa una base que no sea la 10 tan familiar, se debe tener
cuidado de emplear sólo r dígitos admisibles y realizar todos los cálculos con
dígitos de base r.
Los complementos se utilizan en las computadoras digitales para simplificar la
operación de sustracción o resta y para la manipulación lógica. Existen dos
tipos de complementos para cada sistema de base r:

1. El complemento radical, y
2. El complemento radical disminuido
El primero se conoce como el complemento a r’s y el segundo como el
complemento a (r-1)’s. Cuando el valor de la base se sustituye en el nombre,
los dos tipos se conocen como complemento a 2’s y a 1’spara números binarios
y a 10’s y a 9’s para números decimales.

REPRESENTACIÓN EN COMPLEMENTO 1
Complemento 1 es una forma particular de representar números positivos y
negativos. Su forma es simple y bastante directa de entender. Todo número
positivo posee su bit más significativo igual a 0. Los números negativos se
obtienen con sólo negar (o complementar) el número positivo correspondiente.
Un ejemplo para el caso de tres bits es mostrado en la tabla 1.

REPRESENTACIÓN EN COMPLEMENTO 2
La representación en complemento 2 es una forma eficiente de
representar números con signo en microprocesadores de punto fijo. La
propiedad fundamental de este formato es que permite representar
números negativos, por lo cual se utiliza el bit más significativo de la
palabra binaria que se está manejando. Esto lleva a que en un formato
de palabra de n bits, la capacidad de representación sea de
hasta para números positivos y 2 negativos . El bit de signo
será siempre el más significativo. La figura 1 muestra un esquema
para n bits.

Con la forma de representación antes mostrada los números positivos tendrán el


bit más significativo igual a 0. Si es un número negativo éste bit será 1.
Un número positivo escrito en complemento 2 tendrá la misma representación
que su equivalente en un formato sin signo (claro que el bit más significativo
deberá ser 0). Por otro lado, un número negativo escrito en complemento 2 no
tiene un equivalente directo en un formato sin signo. Esto quiere decir que con
sólo agregar un 1 al bit más significativo de un número positivo no se logra
representar un número negativo.
Para llegar a un número negativo en complemento 2 es necesario realizar las
operaciones siguientes: al número positivo que se quiere convertir a negativo se
le debe representar en formato binario, luego complementar cada bit (pasar los
1s a 0s y viceversa) y finalmente sumar 1.
PUBLICIDAD
Anuncios
REPORT THIS AD

REPORT THIS AD

CONDIVIDI:

 Twitter
 Facebook

Buscar:

ENTRADAS RECIENTES
 Metódos Numéricos

 Representación Interna de Números

 1.1 Aritmética del punto flotante

 II. Teoria de Error

 COMPLEMENTO RADICAL DISMINUIDO


COMENTARIOS RECIENTES
ARCHIVOS
 octubre 2016

 septiembre 2016
CATEGORÍAS
 Matemáticas
 Senza categoria
Anuncios
REPORT THIS AD

Blog de WordPress.com.

La precisión en
loscálculos científicospor
computadora
Edscott Wilson García y Guillermo Morales-Luna
Introducción

¿Cuánta gente confía ciegamente en los resultados que arroja una computadora? ¿Qué peligro
plantean para la precisión de los cálculos científicos realizados por computadora las velocidades de
procesamiento cada vez mayores? En casi todas las ramas de la ciencia, si no es que en todas, se utiliza
alguna expresión numérica que involucra cálculos. Aún la más rebuscada ecuación científica, si dispone
de solución numérica, se resuelve con operaciones aritméticas fundamentales. Pero como todas las
herramientas construidas por el ser humano, la computadora tiene sus limitaciones.

Durante la Guerra del Golfo, el 25 de febrero de 1991, un projectil Scudiraquí hizo blanco en la
base militar de Dahrahn en la Arabia Saudita, matando a veintiocho soldados: falló el intento de
intercepción del cohetePatriot. Posteriormente se condujo un estudio para determinar las causas de
la falla: el sistema de control tenía un contador en incrementos de una décima de segundo.
Mediante punto flotante, en la base binaria utilizada por la computadora, 0.1 tiene un patrón
fraccionario que se trunca. Consecuentemente, la precisión de 24 bits del sistema Patriot, tenía un
error de diez millonésimas de segundo en su contador de tiempo. Al cabo de cuatro días el error se
acumuló hasta llegar a un tercio de segundo, lo cual implicó una desviación de 700 metros. Para
efecto de intercepción delprojectil Scud, un error de 700 kilómetros hubiera producido el mismo
resultado final.

En el Centro de Estudios Avanzados del Instituto Politécnico Nacional (Cinvestav) y el Instituto


Mexicano del Petróleo (IMP), así como en el Lawrence Berkeley National Laboratory en Estados
Unidos, y el Institut National de Recherche en Informatique et en Automatique, en
Francia, entre otros centros de investigación, se ha trabajado en el problema de la realización de
cálculos digitales científicos con precisión certera, es decir, la obtención de resultados en los cuales
se puede afirmar con certidumbre hasta qué dígito decimal el resultado es verdadero. Para el
laboratorio de cómputo, la precisión certera es análoga a lo que se conoce en química como
"cifras significativas", un dato indispensable para todos los análisis de laboratorio.

Aunque existen paquetes numéricos como Matemática (Wolfram) y Maple(Maplesoft) con los que
se pueden resolver algoritmos con precisión arbitraria o números racionales exactos, su
funcionamiento de "caja negra" no permite verificar que las operaciones se hagan de manera
correcta, óptima o adecuada al problema en particular. Para el investigador es fundamentaltener la
capacidad de verificación de los resultados. Por ende, el cómputo científico hoy en día se hace
en su mayor parte con los lenguajes FORTRAN y C. El propósito de este artículo es describir cómo
puede trabajar un programador científico para lograr mejor precisión utilizando cualquiera de estos
lenguajes.
¿Cuál es la precisión?

La precisión computacional está determinada primariamente por la cantidad de dígitos con los
que se efectúan las operaciones aritméticas, conocida a partir de la longitud de palabra del
procesador. La palabra establece el número entero más grande que se puede representar con
exactitud. En el procesador Intel modelo 8088, por ejemplo, se tenía una longitud de ocho bits, que
proporcionan un entero máximo de 256. Concatenando dos palabras de este procesador
(precisión doble) se pueden obtener cuatro cifras decimales significativas. Como se puede observar
en el Cuadro 1, el tamaño de la palabra, y por ende la precisión, ha ido en constante aumento.

Cuadro 1. Dígitos de precisión decimal para operaciones con números enteros con respecto
de la velocidad y tamaño de palabra.

Para un procesador con una longitud de palabra de 32 bits se obtienen 19 dígitos decimales en
precisión doble, mientras que para los procesadores de 64 bits -de última generación- se obtienen
38. Generalmente una decena de dígitos decimales es suficiente para la mayoría de los propósitos
de cálculo. El advenimiento de la tecnología láser implica que se pueden realizar mediciones sobre
objetos del mundo físico con un creciente grado de exactitud. Esta información requiere de mayor
precisión en los cálculos computacionales.

Al efectuar cada operación aritmética se reduce, por cuestiones de redondeo y truncamiento, el


número de dígitos significativos del resultado final. Cualquier operación aritmética sobre un
número x para obtener un resultado y incurre obligatoriamente en un error de redondeo, Exy.
Consecuentemente, si el valor x representa una cantidad con una tolerancia ±d, en el resultado
será de ±E con E = d+ Exy. Muchos algoritmosde cálculo, como los métodos de Newton-Raphson
y Runge-Kutta para resolver numéricamente ecuaciones diferenciales que aparecen en los modelos
de simulación de plantas y procesos de refinación, son sujetos auna serie repetitiva de operaciones
donde los resultados se vuelven a alimentar como datos en cada iteración. ¿Hasta qué punto
afectarán estos errores de redondeo el resultado final? Eso no es sencillo de contestar, ya que el
cálculo del error supera en complejidad al problema numérico. ¿Qué se puede hacer al respecto?

Por un lado se puede adquirir un procesador con tamaño de palabra superior para trabajar con
representaciones numéricas de mayor longitud, pero un vistazo al Cuadro 1 es suficiente para
constatar que esto es insuficiente. Nótese que la velocidad del reloj de los procesadores ha ido en
constante aumento, pero la razón de crecimiento en tamaño de palabra no ha sido equiparable. En
menos de veinte años, el hardware de los procesadores multiplicó la velocidad de procesamiento
por 600, mientras que la precisión de las operaciones -determinada por el tamaño de palabra-
aumentó tan sólo cuatro veces. La parte faltante del aumento de precisión en el hardware debe
ser suplida por métodos de software cada vez más complejos. Al aumentar la velocidad de
procesamiento también seabrió la posibilidad de aplicar métodos numéricos más sofisticados, con
un creciente número de operaciones aritméticas. Ello también aumenta los errores por redondeo.

Un ejemplo donde la precisión juega un factor importante es la exploración petrolera. Para la


prospección geofísica se utiliza un modelo matemático basado en inducir ondas sísmicas y analizar
los resultados mediante la ecuación de onda. Con esto es posible predecir la forma de las capas de
roca bajo la superficie. Pero los datos que se alimentan son cuantiosos, y el número de operaciones
que se tienen que realizar, muy elevado. Suelen pasar días antes de obtener un resultado utilizable.
La falta de precisión en mediciones y pérdida de precisión en operaciones aritméticas induce
unmargen de error, que cuando se aplica a la selección de sitios para la perforación de pozos puede
llegar a costar millones de dólares. El aumento en la velocidad de los procesadores ha hecho que el
tiempo para obtener los resultados vaya disminuyendo constantemente, pero los resultados no
son más exactos.

El error relativo se refiere al error de redondeo que se presenta en cada resultado parcial al efectuar
una operación aritmética, y afecta todas las operaciones subsecuentes que utilizan el resultado
parcial como operando. Los errores relativos se acumulan, y cada resultado parcial tiene asociado
unerror relativo total. Algunos métodos para estimar los errores inducidos seencuentran descritos en
el trabajo de Miller y Spooner (1975), donde se verifica que el análisis de error eleva al cuadrado
la complejidad del algoritmo numérico. Por dicho motivo, en la práctica el análisis de error nunca
se lleva a cabo.

Entonces, ¿qué se puede hacer en cualquier rama científica donde hay necesidad de exactitud
en los cálculos para garantizar que los resultados tengan la precisión requerida y no son
simplemente iteraciones sobre errores de redondeo?

Las metodologías para acotar el error incluyen la precisión arbitraria (donde se extiende hasta el
límite de la máquina la memoria utilizada para almacenar los dígitos), los números racionales
(donde en lugar de utilizar un punto flotante se almacenan dos números enteros para representar
el cociente, p/q), la aritmética de intervalos (donde se va modificando un intervalo de confianza), y
la aritmética de rangos (donde el intervalo de confianza determina de manera dinámica a la
precisión arbitraria).

El lenguaje
Cuando el investigador busca precisión en los cálculos, deberá cambiar la aritmética con la
que se efectúan las operaciones escogiendo el método que más convenga. La utilización de
cualquier método para incrementar la precisión implica un aumento en la cantidad de
operaciones que se efectúan en el procesador. Por tanto, es imperativo escoger el lenguaje de
programación idóneo. Una de las desventajas del FORTRAN es que permite la programación no
estructurada, la cual tiende a producir código ejecutable menos eficiente. Por ello, el programador
que utilice este lenguaje deberá poner especial cuidado en utilizar la sintaxis estructurada. Para el
programador en C este detalle no es tan importante, ya que el lenguaje mismo es estructurado. Sin
embargo es importante que se considere el uso de FORTRAN cuando se cumplen lasdos siguientes
condiciones:

El investigador dispone de un compilador de FORTRAN-95 optimizado para la arquitectura


del hardware (por ejemplo, Lahey/Fujitsu para Windows/ Linux/ Solaris).

El algoritmo de cálculo involucra aritmética vectorial/matricial y los resultados de la aritmética


matricial en precisión doble no acarrea un error que pudiese ser significativo (es decir, algoritmos
con ciclos de iteración breves).

Cuando se cumplen estas dos condiciones, entonces es


aconsejable la utilización de FORTRAN-95 para
aprovechar las funciones MATMUL, TRANSPOSE,
PRODUCT, SUM, MAXVAL y otras que generan código
binario optimizado. Cuando se trabajaúnicamente con
aritmética escalar, es posible generar binarios más eficientes
con C, y la selección del lenguaje se convierte en una
preferencia del programador. Los programadores científicos
de instituciones como el National Center for
Supercomputing Applications (NCSA), el Los Alamos
National Laboratory(LANL), y el Argonne National
Laboratory (ANL), por citar unos cuantos ejemplos
estadounidenses, han obtenido buenos resultados
combinando los dos lenguajes, ya que las instrucciones de
FORTRAN-95 y C++ se pueden enlazar en el programa
ejecutable final. Una vez definido el lenguaje, resta
determinar la metodología. Es aconsejable para el programador científico no partir de cero, sino
aprovechar el código ya escrito y comprobado que puede incorporar directamente en sus
programas, o conjuntar en el paso de enlazamiento del código máquina.

Lo arbitrario
La precisión arbitraria es una extensión del formato IEEE de punto flotante que permite
almacenar una cantidad variable de dígitos. Esta modalidad selimita únicamente por la capacidad
de memoria de la computadora. Los números de precisión arbitraria se expresan mediante un
vector de palabras, donde cada elemento representa una porción de dígitos de la mantisa,
expresado en términos de una base numérica. La base utilizada es la que más convenga de
acuerdo a la arquitectura del procesador; comúnmente, el máximo entero mostrado en el Cuadro
1. Por ejemplo, en una computadora de 32 bits la base sería B=2 32. Algunas computadoras son
capaces de efectuar operaciones aritméticas de punto flotante con más velocidad, y hay quien
prefiere utilizar una base expresada en términos de un número de tipo punto flotante.

En la aritmética se aplican los métodos clásicos. Pero cuando los números de precisión múltiple
rebasan varios miles de dígitos, se puede lograr una aceleración en la multiplicación aplicando el
método de Karatsuba,o bien haciendo una conversión a aritmética modular y aplicando
transformadas rápidas de Fourier. Estas dos técnicas están descritas en el texto clásico de
Knuth (1981).

Al efectuar una multiplicación de dos números de n dígitos, el producto que se obtiene consta
de 2n dígitos, de los cuales se desecharán n. Es posible acelerar el proceso de multiplicación si
los dígitos sobrantes no se incluyen dentro del algoritmo de multiplicación desde un principio. Sin
embargo, no es conveniente desecharlos todos, ya que esto implicaría un mayor error en el redondeo
final. Los dígitos a partir del n+1, conservados para el proceso de multiplicación -y que
se desecharán después del redondeo final-, se llaman dígitos de guardia.

https://www.revistaciencia.amc.edu.mx/index.php/82-vol-58-num-4-octubre-diciembre-
2007/comunicaciones-libres/130-la-precision-en-los-calculos-cientificos-por-computadora

onografias.com > Computacion > General

Métodos numéricos
. Aritmética de la computadora
Pablo Turmero

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

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

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

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
1 Los números enteros en computadora Ejemplo: Identificar qué número entero
decimal está representado en la siguiente palabra de 16 bits. (+) 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

1 Los números enteros en computadora (-) Complementamos el valor a 15 caracteres:


0001011001000012 Cambiamos la polaridad: 1110100110111102 Le sumamos 1:
1110100110111112 Ejemplo: Identificar qué número entero decimal está representado
en la siguiente palabra de 16 bits, usando complemento a dos. 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. (-)
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

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

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

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

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: (+) (+)

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: 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: (+) (+) (+) (-) 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
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 0.584045568 0 0.041377792 0

2 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: (-) (-) 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.
2 Los números reales en computadora 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 1/100 = 0.0110 =
0.00000010100011112 = 0.10100011112 x 2-110 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

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.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%
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 ; j=1 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.

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

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

https://m.monografias.com/trabajos105/metodos-numericos-aritmetica-
computadora/metodos-numericos-aritmetica-computadora.shtml

PUNTO FLOTANTE

Matematicas Discretas

Nov 22, 2017 · 12 min read

3.1 Introducción
Se denominan Números en Punto Flotante a las representaciones
internas del procesador que modelan a los números reales. En forma
externa, se representan números con punto decimal tal como 3.1415926
o en notación científica 9.512x10–5, con un solo dígito a la izquierda del
punto decimal; es decir, 9.512x10–4.
3.2 Normalización de números
Se dice que el número está normalizado si el dígito a la izquierda del
punto no es cero. En el ejemplo anterior, 95.12x10–5. De manera
normalizada quedaría: 9.512x10–4. En el caso de computadores, se
emplea números en sistema binario, y con un número finito de dígitos.

3.3 Propósito de números en punto


flotante
Como la memoria de los computadores es limitada, no puedes
almacenar números con precisión infinita, no importa si usas fracciones
binarias o decimales, en algún momento tienes que cortar. Pero ¿cuánta
precisión se necesita? ¿Y dónde se necesita? ¿Cuántos dígitos enteros y
cuántos fraccionarios?
La idea es descomponer los números en dos partes:

. Una mantisa (también llamada coeficiente o significando) que


contiene los dígitos del número, donde las mantisas negativas
representan números negativos; es decir, la mantisa corresponde a la
parte fraccionaria que es la diferencia entre el número y la parte entera
del número. Veamos este ejemplo, en el número decimal 13.8543, la
parte entera es 13 y la mantisa=13.8543–13= 0,8543. Pero, cuando el
número decimal es negativo; esto es, -13.8543, la parte entera es -14 y la
mantisa=-13.8543-(-14)= 0.1457.

.Un exponente que indica dónde se coloca el punto decimal (o


binario) en relación al inicio de la mantisa. Cuando el exponente es
negativo representará a un número menor que uno.

Este formato cumple todos los requisitos:

. Puede representar números de órdenes de magnitud enormemente


dispares (limitado por la longitud del exponente).

. Proporciona la misma precisión relativa para todos los órdenes


(limitado por la longitud de la mantisa).

. Permite cálculos entre magnitudes: multiplicar un número muy


grande y uno muy pequeño conserva la precisión de ambos en el
resultado.
. Los números de punto flotante decimales normalmente se expresan en
notación científica con un punto explícito siempre entre el primer y el
segundo dígitos.

El exponente o bien se escribe explícitamente incluyendo la base, o se


usa una E para separarlo de la mantisa.

Ejemplo 3.1: según la parte entera, la mantisa y el exponente de la


tabla de la figura 3.1, escriba su valor equivalente, en notación científica
y su valor en punto flotante.

3.4 Cifras significativas


Las cifras significativas representan el uso de una o más escalas de
incertidumbre en determinadas aproximaciones. Se dice que 4.7 tiene 2
cifras significativas, mientras que 4.70 tiene 3. Para distinguir los ceros
que son significativos de los que no lo son, estos últimos suelen
indicarse como potencias de 10 en notación científica, por ejemplo 5724
será 5.724x103, con 4 cifras significativas.
Cuando no pueden ponerse más cifras significativas, cierta cantidad de
ellas, por ejemplo de tres cifras simplemente, a la tercera cifra se le
incrementa un número, si la cifra predecesora es 5 con otras cifras o
mayor que 5. Si dicha cifra es menor simplemente se deja igual.
Ejemplo 5.3689 consta de 5 cifras significativas, si sólo se pueden
mostrar tres cifras, se le suma una unidad a la cifra 6 (6+1=7) ya que la
cifra que la precede 8 es mayor que 5, así que queda 5.37 y si el número
es menor que cinco: así 5.36489 y se redondea queda 5.36, no aumenta
por que la cifra 4 es menor que 5.
Cuando la cifra a redondear está precediendo a 5, simplemente
aumente en 1 dicha cifra. Por ejemplo para redondear a 3 cifras los
números 12.45 y 0.1855, se observa que en el primer número, el dígito 3
que precede al 5, se incrementa en 1 cifra quedando 12.5 y el segundo
número 0.1855, se mantiene su valor, 0.186 o 1.86x10–1.
El uso de las cifras significativas considera que el último dígito de
aproximación es incierto, por ejemplo, al determinar el volumen de un
líquido con una probeta cuya resolución es de 1 ml, implica una escala
de incertidumbre de 0.5 ml. Así se puede decir que el volumen de 6 ml
será realmente de 5.5 ml a 6.5 ml. El volumen anterior se representará
entonces como (6.0 ± 0.5) ml. En caso de determinar valores más
próximos se tendrían que utilizar otros instrumentos de mayor
resolución, por ejemplo, una probeta de divisiones más finas y así
obtener (6.0 ± 0.1) ml o algo más satisfactorio según la resolución
requerida.

3.5 Estándar IEEE 754


El estándar IEEE 754 ha sido definido por el Instituto de Ingenieros
Eléctricos y Electrónicos (Institute of Electrical and Electronics
Engineers, IEEE) y establece dos formatos básicos para representar a
los números reales en la computadora digital: precisión simple y
precisión doble.

La representación del exponente a exceso es 2n-1–1, mientras que, para


la mantisa, normalmente se utiliza Signo Magnitud. Además, la mantisa
se suele normalizar colocando el punto decimal a la derecha del bit más
significativo.

3.6 Precisión Simple en el Estándar IEEE


754
Para escribir un número en el Estándar IEEE 754 en precisión simple,
se escribe el número real usando 32 bits (4 bytes): 1 bit para el signo (s)
del número, 23 bits para la mantisa (m) y 8 bits para el exponente (E),
que se distribuyen de la siguiente forma:

En la siguiente tabla se resumen los cálculos que hay que realizar para
deducir el valor en base 10 de un número escrito en el estándar IEEE
754 con precisión simple:

Figura 3: representación de un número real con precisión simple en el estándar IEEE 754.

Ejemplo 3.2: exprese en formato IEEE 754 de precisión simple, el


valor del número 45.25

Solución
Pasando la mantisa a base 2 y normalizando, se tiene: 45=1011012 y
0.25=0.012

Veamos cómo se obtiene el valor del número:

Ejemplo 3.3: Para escribir el número


101110.0101011101000011111000011111000100112
en el estándar IEEE 754 con precisión simple, con exponente en exceso
a 2n-1–1 y mantisa m y signo s, determine su número hexadecimal
correspondiente

Primero tendremos que


normalizarlo:101110.0101011101000011111000011111000100112=1.0111
00101011101000011111000011111000100112 X 25

El exponente E será: exponente representacion externa más el


exponente en exceso a 2n-1–1 en base 10 en precisión simple es 127.
Calculemos ahora a E:

De la mantisa solo se cogerán los 23 bits más significativos:


1.0111001010111010000111

Como el resto de bits no pueden representarse, ya que no caben en la


mantisa, entonces se descartarán. Sin embargo, cuando la mantisa se
normaliza situando el punto decimal a la derecha del bit más
significativo, dicho bit siempre vale 1. Por tanto, se puede prescindir de
él, y coger en su lugar un bit más de la mantisa de la parte descartada.
De esta forma, la precisión del número representado es mayor. Así, los
bits de la mantisa serán: 01110010101110100001111

En consecuencia, el número se puede representar como:

Los programadores para representar los números reales en este


formato, suelen hacerlo en el Sistema Hexadecimal; efectivamente,
tome toda la cadena de bits y agrúpelos de a 4 bits para representar
cada cifra hexadecimal.
En este caso, los números no son exactamente iguales, ya que con
precisión simple no han podido representarse todos los bits de la
mantisa.

Ejemplo 3.4: Dado el número 3E400000H del estándar IEEE 754 con
precisión simple, exponente en Exceso a 2n-1–1 y mantisa m con 1 bit
implícito, signo s, averigüe a qué número representa en base 10. En
efecto, pueden realizarse los siguientes pasos:
3.8 Precisión Doble en el Estándar IEEE
754
Para escribir un número real en precisión doble, se emplean 64 bits (8
bytes): 1 bit para el signo (s) del número, 52 bits para la mantisa (m) y
11 bits para el exponente (E).

En la siguiente tabla se resumen los cálculos que hay que realizar para
deducir el valor en base 10 de un número escrito en el estándar IEEE
754 con precisión doble:
Figura 3.4: representación de un número real con precisión doble en el estándar IEEE 754.

Ejemplo 3.5: Si se quiere escribir el número 19.5625 en el estándar


IEEE 754 con precisión doble, exponente en Exceso a 2n-1–1 y mantisa
m con 1 bit implícito, signo s, dado en hexadecimal.
Los pasos a seguir son:

1º) Cambiar 19.5625 a base 2. Primero la parte entera:

y, a continuación, la parte fraccionaria:

2º) Normalizar el número binario obtenido, colocando el punto decimal


a la derecha del bit más significativo: 10011.10012 = 1.00111001 x 24
Casos especiales en el Estándar IEEE 754

Tanto en precisión doble como en precisión simple, existen algunos


casos especiales que dependen de los valores del signo, del exponente y
de la mantisa:
3.9 Rangos de representación en el
Estándar IEEE 754
Los dos últimos casos merecen especial atención, ya que, cuando todos
los bits del exponente son ceros (00…0), esto quiere decir que no se está
utilizando bit implícito. Si, además, la mantisa es todo ceros (00…0), el
número representado es el cero (0), pero si la mantisa es distinta de
todo ceros, el número que se está representando es muy pequeño, de
forma que, el exponente valdrá -126 ó -1022, dependiendo de si el
número está escrito en precisión simple o doble, respectivamente.

Los rangos de representación en el estándar IEEE 754 con precisión


simple y doble, exponente en Exceso a 2n-1–1 y mantisa en Signo
Magnitud con bit implícito, son los siguientes:
Ambos rangos de representación son discontinuos, es decir, no se
pueden representar todos los números reales que existen entre dos
cualesquiera de ellos. Esto es debido a que entre dos números reales
cualesquiera siempre existen infinitos números, sin embargo, sólo se
dispone de un número determinado de bits para representar a los
números reales. Por esta razón, en las computadoras digitales no se
pueden representar a todos los números reales. Por ejemplo, con
precisión simple, alrededor del número cero (0) existen infinitos
números reales, mayores que -2–126 y menores que 2–126, que no son
representables. Gráficamente:

Figura 3.8: Números no representables en el estándar IEEE 754 con precisión simple.

Codificaciones con significado especial

. Infinito (E=255, m=0): representan cualquier valor de la región de


overflow.

. NaN (Not-a-Number) (E=255, m>0): se obtienen como resultado de


operaciones inválidas

. Número desnormalizado (E=0, m>0): es un número sin normalizar


cuyo bit implícito se supone que es 0. Al ser el exponente 0, permiten
representar números en las regiones de underflow

3.10 Aritmética en punto flotante


La aritmética de punto flotante tiene un alto grado de elaboración, una
de las refinaciones es el redondeo, esto cobra especial importancia en
este sistema numérico que en sí es una aproximación del número real.
Se emplean bits adicionales denominados de guarda y redondeo en los
cálculos intermedios.
Las operaciones en punto flotante requieren de algoritmos especiales y
de un hardware dedicado (tradicionalmente como un coprocesador, con
registros independientes, que puede comunicar los resultados a la
memoria)

3.10.1 Algoritmo suma/resta en punto


flotante.
Para realizar esta operación puede proceder así:

1. Extraer signos, exponentes y magnitudes.

2. Tratar operandos especiales (por ejemplo, alguno de ellos a cero)

3. Desplazar la mantisa del número con exponente más pequeño a la


derecha |E1E2| bits

4. Fijar el exponente del resultado al máximo de los exponentes (podría


suceder que se pierdan cifras de representación)

5. Si la operación es suma y los signos son iguales, o si la operación es


resta y los signos son diferentes, sumar las mantisas. En otro caso
restarlas. El resultado podría no quedar normalizado.

6. Detectar overflow de la mantisa

7. Normalizar la mantisa, desplazándola a la derecha o a la izquierda


hasta que el dígito más significativo esté delante del punto.

8. Redondear el resultado y renormalizar la mantisa si es necesario. En


este caso podría suceder que al redondear, el número se des-normalice
(bit implícito se asume que es 0), en ese caso debe repetirse el paso de
normalización; de lo contrario, permitiría representar números en las
regiones de underflow (E>0 y m> 0).

9. Corregir el exponente en función de los desplazamientos realizados


sobre la mantisa.

10. Detectar overflow o underflow del exponente


Ejemplo 3.6: si a= 0.4523x104 y b = 0.0002115x100, calcule a + b y a
— b, almacenando solamente 4 dígitos en la mantisa y 2 en el
exponente.

Solución:

Estos cálculos muestran claramente la pérdida de dígitos significativos


en las operaciones de suma y resta en punto flotante. Observamos que
en el caso de la resta no se ha producido una diferencia cancelativa, ya
que el resultado tiene una exactitud igual a la precisión (4 dígitos) de la
aritmética usada.

Lo usual es dedicar hardware especial para implementar el algoritmo


anterior. En caso de no tenerlo, la solución es implementar una
biblioteca, en base a las operaciones de la unidad aritmética entera, que
realice el algoritmo anterior. En este caso, obviamente la realización de
una simple suma de flotantes requiere la ejecución de varias
instrucciones, alargando el tiempo de ejecución de los programas que
empleen números reales.

3.10.2 Multiplicación en punto flotante


Esta operación puede describir los siguientes pasos:
Ejemplo 3.8: aplique el algoritmo de la multiplicación para
multiplicar 1.110x1010 por 9.200x10–5, almacenando solamente 4
dígitos en la mantisa y hasta 2 dígitos en el exponente. Se sugiere que
proceda así:

P1: Calculemos el exponente del producto sumando los exponentes de


los factores. Efectivamente, el nuevo exponente es e= 10 + (-5) = 5.

Ahora probemos con los exponentes desplazados para asegurarnos que


obtenemos el mismo resultado: 10 + 127 = 137, y –5 + 127 = 122.
Entonces, el exponente sería E= 137 + 122 = 259, lo cual es un error,
debido a que el desplazamiento se realizaría 2 veces (una vez por cada
exponente); por consiguiente que el exponente desplazado es: E= (137 +
122) — 127 = 259–127 = 132 exponente para la representación.

P2: Por último se deben multiplicar las mantisas: 1.110x9.200=


10212000.

Observe que hay tres dígitos a la derecha de cada factor, de manera que
deberá haber 6 dígitos a la derecha del punto decimal del producto:
10.212000.
Suponiendo que sólo se pueden mantener 3 dígitos a la derecha del
punto decimal, el producto resultante sería: 10.212x105
P3: Este resultado no está normalizado, de manera que tenemos que
normalizarlo para obtener: 1.0212 x106

Después de la multiplicación, el producto puede ser desplazado a la


derecha, sumando 1 al exponente, o bien desplazado a la izquierda
restándole 1 al exponente. Por lo tanto, en este paso debe verificarse la
presencia de un sobre flujo (overflow) o bien de un bajo flujo
(underflow).

P4: Puesto que asumimos que la mantisa era de 4 dígitos, se debe


redondear al producto, de manera que: 1.0212x106es redondeado a
1.021x106

P5: El signo del producto depende de los signos de los factores, si son
iguales el producto es positivo y si son diferentes, el producto será
negativo

Efectivamente, en este caso el resultado de la mantisa es: +1.021x106

3.10.3 División en punto flotante


El algoritmo de división, es bastante más complejo, y produce una
operación más lenta. Para acelerarla en algunos diseños se genera el
recíproco; en otros se intenta obtener varios bits de la división en un
solo paso. Un pequeño error en la implementación de este algoritmo
causó una pérdida millonaria a la empresa Intel, en el diseño del
procesador PENTIUM.

La norma IEEE 754, tiene símbolos especiales para representar más y


menos infinito, y lo que denomina NaN (not a number) que ocurre en la
división de cero por cero, o en una resta de infinito menos infinito.
También se tratan números no normalizados que permiten extender el
rango de representación.
AUTOEVALUACION 3
TALLER 3
 Mathematics

8 claps
https://medium.com/@matematicasdiscretaslibro/capítulo-3-punto-flotante-c689043db98b

Das könnte Ihnen auch gefallen