Está en la página 1de 87

Aritmética de

computadores
Aritmética de la computadora
Los computadores no almacenan los números con
precisión infinita sino de forma aproximada empleando un
número fijo de bits (apócope del término inglés Binary Digit)
o bytes (grupos de ocho bits). Prácticamente todos los
computadores permiten al programador elegir entre varias
representaciones o 'tipos de datos'. Los diferentes tipos de
datos pueden diferir en el número de bits empleados, pero
también (lo que es más importante) en cómo el número
representado es almacenado: en formato fijo (también
denominado 'entero') o en punto flotante (denominado
'real').
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,
que es el lenguaje natural de operación.
Aritmética de la computadora

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.
Cuando se realizan las conversiones y los cálculos se
presentan 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.
Aritmética de la computadora

Cada dispositivo magnético es un dígito binario, denominado


bit. 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). Los bytes son usados 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
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.
Números enteros en la computadora
 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
Números enteros en la computadora

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
Números enteros en la computadora

Entonces, el rango de almacenamiento de números enteros


decimales, en máquinas con palabras de memoria de 16 bits
es: (−𝟑𝟐, 𝟕𝟔𝟖, 𝟑𝟐, 𝟕𝟔𝟕).
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.
Números enteros en la computadora

Ejemplo: Representar el número 2834510 en sistema binario,


en una palabra de 16 bits.
2834510 = 110111010111001

0 1 1 0 1 1 1 0 1 0 1 1 1 0 0 1
+
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
Para obtener el valor −178610 :
• Complementamos el valor a 15 caracteres:
0000110111110102
• Cambiamos la polaridad

1 1 1 1 1 0 0 1 0 0 0 0 0 1 0 1
-
• Le sumamos 1

1 1 1 1 1 0 0 1 0 0 0 0 0 1 1 0
-
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
-
Representar el número
−284910 en sistema binario, en
una palabra de 16 bits, usando
complemento a dos.
El valor sin signo en 15 caracteres es: 1110100110111112
Le restamos 1: 1110100110111102
Cambiamos la polaridad: 0001011001000012

1 1 1 1 0 1 0 0 1 1 0 1 1 1 1 1
-

0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 1
+
211 + 29 + 28 + 25 + 20 = 284910
Operaciones de punto fijo:
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.
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.
 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.
Números en punto
flotante
Notación científica normalizada

 En el sistema decimal, cualquier número real puede expresarse mediante


la denominada notación científica normalizada. Para expresar un número
en notación científica normalizada multiplicamos o dividimos por 10 tantas
veces como sea necesario para que todos los dígitos aparezcan a la
derecha del punto decimal y de modo que el primer dígito después del
punto no sea cero.
732,5051 = 0,7325051 × 103
−0,005612 = −0,5612 × 10−2
Notación científica normalizada

En general, un número real 𝑥 distinto de cero, se representa en notación


científica normalizada en la forma:
𝑥 = ±𝑟 × 10𝑛
1
en donde r es un número tal que ≤ 𝑟 < 1 y n es un entero (positivo,
10
negativo o cero).
Exactamente del mismo modo podemos utilizar la notación científica en el
sistema binario. En este caso, tenemos que:
𝑥 = ±𝑞 × 2𝑚
Donde m es un entero.
Notación científica normalizada

El número q se denomina mantisa y el entero m exponente.


En un ordenador binario tanto q como m estarán
representados como números en base 2. Puesto que la
mantisa q está normalizada, en la representación binaria
empleada se cumplirá que:
1
≤ 𝑞 <1
2
Distribución de reales:

La manera más común de almacenar números reales en una PC es


utilizando palabras de 32 bits (4 bytes):
 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.1𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 × 2𝑒𝑒𝑒𝑒𝑒𝑒𝑒
𝑚 = 0, 1 ; 𝑒 = 0, 1
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
carácter del número binario en punto flotante:
± ± e e e e e e e mmmmmmmmmmmmmmmmmmmmmmm
 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
Los números reales en computadora

 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
𝟎. 𝟏𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎 a 𝟎. 𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏𝟏
 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−1 = 1 − 2−24 = 0. 999999940395355224609375


𝑗=1
Numeros reales en computadora

 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 × 2−128 ≅ 1.47 × 10−39
 El número real positivo más grande que puede representarse es:
0.999999940395355224609375 × 2127 ≅ 1.70 × 1038
 De manera que el rango total para los números reales positivos o
negativos, en este tipo de computadora es de
1.47 × 10−39 𝑎 1.70 × 1038 .
Representar en sistema binario, en una palabra
de 32 bits, el número 31.2510
2
31.2510 = 0.312510 × 10 = 0.312510 × 10010
31.2510 = 0.01012 × 11001002
= 11111,012 = 0.11111012 × 210
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
++
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)
Resumen
Mantisa: corresponde a la parte fraccionaria que es la
diferencia entre el número y la parte entera del número.
En el número decimal 18.7682:
18 → 𝑃𝑎𝑟𝑡𝑒 𝑒𝑛𝑡𝑒𝑟𝑎
18.7682 − 18 = 0,7682 → 𝑀𝑎𝑛𝑡𝑖𝑠𝑎
Pero, cuando el número decimal es negativo; −18.7682:
−19 → 𝑃𝑎𝑟𝑡𝑒 𝑒𝑛𝑡𝑒𝑟𝑎
−18.7682 − (−19) = 0,2318 → 𝑀𝑎𝑛𝑡𝑖𝑠𝑎
Resumen

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.
El formato de punto flotante cumple:

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

Parte Mantisa Exponente Notación Valor en punto


entera científica fijo
4 0,78 5 4,78 × 105 478000
0 0,435 6 4,35 × 105 436000
-12 0,9825 -8 −12,9825 × 10−8 -0,000000129825
3 0,23456 -2 3,23456 × 10−2 0,0323456
8 0 -4 8 × 10−4 0,0008
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.
Estándar IEEE 754

Formato Bits Bits Bit del Número más Número más


total significativos exponente pequeño grande
es
Precisión 32 23 +1 signo 8 ~1.2 × 10−38 ~3.4 × 1038
simple
Precisión 64 52+1 signo 11 ~5.0 × 10−324 ~1,8 × 10308
Doble

La mantisa se suele normalizar colocando el punto


decimal a la derecha del bit más significativo.
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:
Cálculos para deducir el valor en base 10

Signo Exponente ( e ) Mantisa(m) Valor Decimal

0ó1 1 < 𝑒 < 255 Cualquiera −1 𝑠 ∗ 1𝑚 ∗ 2𝑒−127


0 𝑒 = 255 𝑚=0 +∞
1 𝑒 = 255 𝑚=0 −∞
0ó1 𝑒 = 255 𝑚≠0 NaN
0ó1 𝑒=0 𝑚=0 0
0ó1 𝑒=0 𝑚≠0 −1 𝑠 ∗ 0𝑚 ∗ 2−126
Expresar en formato IEEE 754 de precisión
simple, el valor del número 45.25
¿Cómo se obtiene el valor del número?

El número es positivo : 0


Se usa la expresión 2𝑛−1 − 1, donde n es
el número de cantidad de cifras
significativas: 1,0110101 × 25 , entonces
𝑛=8
𝑛−1
2 − 1 = 127
¿Cómo se obtiene el valor del número?

Exponente:
𝑒 = 𝑒𝑥𝑝𝑜𝑛𝑒𝑛𝑡𝑒 𝑒𝑛 𝑟𝑒𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑎𝑐𝑖ó𝑛 𝑒𝑥𝑡𝑒𝑟𝑛𝑎 + 𝑒𝑥𝑝𝑜𝑛𝑒𝑛𝑡𝑒 𝑒𝑛 𝑒𝑥𝑐𝑒𝑠𝑜
𝑒 = 5 + 127 = 132 = 10000100
¿Cómo se obtiene el valor del número?

El bit implícito es el número que antecede la


mantisa (siempre es 1), de manera que el
número que representa a la mantisa es:
101101010000000000000000

Bit implícito
Expresión Final:

Signo : 0
Exponente: 10000100
Mantisa: 01101010000000000000000

01000010001101010000000000000000
S Exponente Mantisa
Escribir el número
101110.0101011101000011111000011111000100112 en el
estándar IEEE 754 con precisión simple, con exponente en
exceso a 2𝑛−1 – 1 y mantisa 𝑚 y signo 𝑠 , determine su
número hexadecimal correspondiente
Solución

Normalizar el número
101110.010101110100001111100001111100010011 2 :
1,011100101011101000011111000011111000100112
× 25
Determinar el exponente
𝑒 = 5 + 28−1 − 1 = 132
𝑒 = 10000100
Solución:

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

01000010001110010101110100001111
S Exponente Mantisa

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
Desarrollo

Reescribiendo el número en grupos de 4:


01000010001110010101110100001111
Desarrollo

01000010001110010101110100001111
4 2 3 9 5 D 0 F
Dado el número 3𝐸40000016 del estándar
IEEE 754 con precisión simple, exponente
en Exceso a 2𝑛−1 – 1 y mantisa m con 1 bit
implícito, signo s, averigüe qué número
representa en base 10.
Desarrollo

Convertir 3𝐸40000016 a base 2


3𝐸400000
0011 1110 0100 0000 0000 0000 0000 0000
Rescribir el signo, el exponente y la mantisa:
Signo = 0 → Positivo
Exponente: 8 bits → 01111100
Mantisa: 23 bits → 10000000000000000000000
Desarrollo

Pasar el exponente a base 10:


01111100 − 2𝑛−1 – 1
01111100 − 28−1 – 1
124 − 128– 1 = 124 − 127 = −3
Escribirla mantisa, teniendo en cuenta el bit implícito
seguido de la mantisa
1,10000000000000000000000
Desarrollo

Escribiendo el número completo incluyendo signo y


exponente:
1,10000000000000000000000 × 2−3 = 1,1 × 2−3
Escribir el número en base 10:
1,1 × 2−3 = 20 + 2−1 × 2−3
1,1 × 2−3 = 1 + 0,5 × 0,125 = 1,5 × 0,125 = 0,1875
3𝐸40000016 𝑝𝑟𝑒𝑠𝑖𝑐𝑖ó𝑛 𝑠𝑖𝑚𝑝𝑙𝑒 = +0,18752
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).
Cálculos para deducir el valor en base 10

Signo Exponente ( e ) Mantisa(m) Valor Decimal

0ó1 1 < 𝑒 < 2047 Cualquiera −1 𝑠 ∗ 1𝑚 ∗ 2𝑒−1023


0 𝑒 = 2047 𝑚=0 +∞
1 𝑒 = 2047 𝑚=0 −∞
0ó1 𝑒 = 2047 𝑚≠0 NaN
0ó1 𝑒=0 𝑚=0 0
0ó1 𝑒=0 𝑚≠0 −1 𝑠 ∗ 0𝑚 ∗ 2−1022
Si se quiere escribir el número 19.5625 en
el estándar IEEE 754 con precisión doble,
exponente en Exceso a 2 𝑛−1 −1 y
mantisa m con 1 bit implícito, signo s,
dado en hexadecimal.
Desarrollo

Normalizar el número binario obtenido, colocando el


punto decimal a la derecha del bit más significativo:
10011,1001 2
10011,10012 = 1,00111001 × 24
Escribir en base 10 el exponente, con n=11:
4 + 211−1 − 1 = 4 + 210 − 1
4 + 1024 − 1 = 1027
Desarrollo

Establecer la mantisa usando el bit implícito, para esto


se toma los 8 bits que están a la derecha del punto
1,00111001
00111001
Completar el resto de la mantisa con 52 ceros:
001110010000000000000000000000000000000000000000000000000000
Expresar el número en el estándar IEEE754 con
precisión doble (1 signo, 11 exponente, 52 mantisa)
Desarrollo

Signo: Positivo → 0
Exponente: 1027→10000000011
Mantisa:
001110010000000000000000000000000000000000000000000000000000
Desarrollo

Expresarlo en forma hexadecimal: Agrupando de a 4


bits:
0100000000110011100100000000000000000000000000000000000000000000
4 0 3 3 A 0 0 0 0 0 0 0 0 0 0 0
Casos especiales en el Estándar IEEE 754
Signo (s) Exponente ( e ) Mantisa (m) Significado
Positivo(0) Todo unos (11…1) Todos +∞
ceros(00…0)
Negativo (1) Todo unos (11…1) Todos −∞
ceros(00…0)
0ó1 Todo unos (11…1) Distinta de cero NaN
0ó1 Todos ceros(00…0) Todos Representa al
ceros(00…0) cero (0)

0ó1 Todos ceros(00…0) Distinta de cero Número pequeño


cercano al cero
Rangos de representación

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.
Rangos de representación

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


754 con precisión simple y doble, exponente en
Exceso a 2𝑛−1 − 1 y mantisa en Signo Magnitud
con bit implícito son:
2−23 − 2 2127 10 ≤ 𝑥 ≤ 2 − 2−23 2127 10
2−52 − 2 21023 ≤𝑥≤ 2 − 2−52 21023
10 10
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
Aritmética en
punto flotante
Aritmética

La aritmética de punto flotante tiene un alto


grado de elaboración, una de ellas 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.
Algoritmo suma/resta en punto flotante.

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).
Algoritmo suma/resta en punto flotante.

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.
Algoritmo suma/resta en punto flotante.

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).
Algoritmo suma/resta en punto flotante.

9.Corregir el exponente en función de


los desplazamientos realizados sobre
la mantisa.
10. Detectar overflow o underflow del
exponente
Ejemplo 1

2 4
Si 𝑎 = 6,144 × 10 y 𝑏 = 9,975 × 10 , calcule
a + b y a — b, almacenando solamente 4
dígitos en la mantisa y 2 en el exponente.
Solución

2 4
𝑎 = 6,144 × 10 = 0,06144 × 10
4
𝑏 = 9,975 × 10
𝑎 + 𝑏 = 0,06144 × 104 + 9,975 × 104
4
𝑎 + 𝑏 = 10,03644 × 10
𝑎 + 𝑏 = 1,003644 × 105
5
𝑎 + 𝑏 = 1,004 × 10
Solución

2 4
𝑎 = 6,144 × 10 = 0,06144 × 10
4
𝑏 = 9,975 × 10
4 4
𝑎 − 𝑏 = 0,06144 × 10 − 9,975 × 10
4
𝑎 − 𝑏 = −9,91356 × 10
4
𝑎 − 𝑏 = −9,914 × 10
Ejemplo 2

4 0
Si 𝑎 = 0.4523 × 10 y 𝑏 = 0.0002115 × 10 ,
calcule a + b y a — b, almacenando
solamente 4 dígitos en la mantisa y 2 en
el exponente.
Solución

𝑎 + 𝑏 = 0.4523 × 104 + 0.0002115 × 100


4 4
= 0.4523 × 10 + 0.00000002115 × 10
= 0,4523 × 104 𝑝𝑜𝑠𝑖𝑡𝑖𝑣𝑜 = +4.523 × 103
4 0
𝑎 − 𝑏 = 0.4523 × 10 − 0.0002115 × 10
= 0.4523 × 104 − 0.00000002115 × 104
4 3
= 0,4523 × 10 𝑝𝑜𝑠𝑖𝑡𝑖𝑣𝑜 = +4.523 × 10
Multiplicación en punto flotante

Se suman los exponentes: Los exponentes estén con exceso


2𝑛−1 − 1 para obtener el exponente correcto.
Por ejemplo el primer número tiene exponente 5 y el segundo -7:
2𝑛−1 − 1 = 28−1 − 1 = 127
𝑒 = 5 + 127 = 132
𝑒 = −7 + 127 = 120
Suma de los exponentes:
132+120=252 Pero no es correcto
252-127=125 Es el exponente correspondiente a 5+(-7)=-2
Multiplicación en punto flotante

La mantisa del resultado es igual al producto de las


mantisas. Este producto no tiene signo. El resultado
requiere normalización mediante desplazamiento a la
derecha y ajuste del exponente del resultado.
Si la mantisa resultado es del mismo tamaño que la de
los operandos habrá que redondear. El redondeo
puede implicar la necesidad de normalización
posterior.
Multiplicación en punto flotante

El exponente del resultado es igual a la suma de los


exponentes de los operandos. Considerando que
usamos una representación sesgada del exponente, al
hacer esta suma estamos usando 2 veces el sesgo y
por tanto habrá que restar este sesgo una vez para
obtener el resultado correcto.
Finalmente se coloca el signo.
Ejemplo 1

Aplique el algoritmo de la
multiplicación para multiplicar 1.110 ×
10 −5
10 por 9.200 × 10 , almacenando
solamente 4 dígitos en la mantisa y
hasta 2 dígitos en el exponente.
Solución

 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.
Solución

Por último se deben multiplicar las mantisas:


1.110 × 9.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.212 × 105
Solución

Este resultado no está normalizado, de manera que


tenemos que normalizarlo para obtener: 1.0212 × 106
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).
Solución

Puesto que asumimos que la mantisa era de 4 dígitos, se


debe redondear al producto, de manera que: 1.0212 ×
106 es redondeado a 1.021 × 106
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.021 × 106

También podría gustarte