Documente Academic
Documente Profesional
Documente Cultură
COMPUTACIONAL
Una computadora digital moderna puede estar equipada con varios procesadores
aritmticos (hardware), que manipulan datos de diferentes formatos o resuelven
funciones aritmticas especiales para aplicaciones generales o dedicadas. Estos
procesadores aritmticos proveen mayor velocidad de cmputo que los mtodos
tradicionales de computacin. La eleccin de un dado sistema aritmtico condiciona
tanto al diseo del sistema como a las aplicaciones.
Sea R un conjunto de nmeros reales, la aritmtica real podra definirse como un
mapeo algebraico f: R x RR.
Sea M el conjunto de nmeros representados en una mquina, cada nmero en
M podra tener solo un numero finito de dgitos. M ser entonces un subconjunto finito
de R, esto es, M est contenido en R. Una aritmtica en la mquina podra modelarse
por el mapeo g: M x MM.
La segunda difiere de la primera en el aspecto fundamental de la precisin. Solo
cmputos de precisin finita pueden ser realizados por los procesadores aritmticos,
mientras que la aritmtica real puede producir resultados de precisin arbitraria. La
Aritmtica Mquina ser entonces una aproximacin de la Aritmtica Real sujeta a los
controles de redondeo apropiados.
En trminos de mapeo funcional, la funcin mquina g puede relacionarse a la
real f por la siguiente funcin compuesta g : h o p. Donde el mapeo h se define por h
= f| M x MR (la funcin real f restringida al dominio mquina M x M) y el mapeo
definido por p: RM (el esquema de redondeo elegido).
Ntese que las computadoras digitales, en contraste con las unidades aritmticas
convencionales, pueden realizar cmputos de precisin arbitrarios, dada la suficiente
capacidad de almacenamiento y tiempo de ejecucin. La precisin finita surge de las
restricciones en ambos aspectos impuestos al sistema: tamao de palabra restringida,
registros, sumadores, capacidad de memoria y los tiempos de ejecucin.
SISTEMAS NUMERICOS
La implementacin de los algoritmos aritmticos en una computadora digital
depende mucho de cmo el dato numrico es almacenado en memoria y en registros.
Como las computadoras slo implementan artimticas de precisin finita, todas las
representaciones numricas debern ser restringidas a una longitud finita. Una buena
eleccin del sistema aritmtico y de la representacin numrica interna afecta tanto a
la eficiencia de la implementacin de las operaciones mquina como a la exactitud.
Generalmente, los sistemas nmericos de las arimticas mquina pueden dividirse en
cinco categoras:
1- Sistemas Numricos con Base (Conventional Radix Number System)
Las computadoras convencionales usan fixed radix, base fija, con r2 y un
conjunto de dgitos {0, 1, 2..., r-1}. Todos los dgitos del nmero son pesados
(ponderados) positivamente y cada nmero es representado en forma nica. Algunos
sistemas especiales pueden usar Mixed Radix, en los cuales diferentes dgitos del
nmero asumen valores distintos de la base.
Es el sistema adoptado por la mayora de los sistemas. Slo unos pocos utilizan
el sistema reduntante de dgito signado y los restantes sistemas (reiduo, racional,
logartmico) no han demostrado an ser eficientes por lo que no han sido aceptados.
Un nmero con base r, X, se representa en una computadora por un vector
digital de (n+k)-tuplas X=(Xn-1, , X0 . X-1 , , X-k)r donde cada componente Xi, para
-k<=i<=n-1 se denomina de i-simo dgito del vector X. Cada dgito podr asumir r
distintos valores {0, 1, ..., r-1}. En un sistema de base fija, todos los dgitos asumen la
misma base.
Los primeros n dgitos forman la parte entera del nmero, y los restantes k,
indexados negativamente forman la parte fraccionaria, un punto (o coma) separa a
ambas porciones. En una computadora ese punto es implcito, esto es, no ocupa
ninguna posicin fsica en el almacenamiento.
En un sistema radix pesado se asocia con cada vector digital X, un valor nico
denotado como la sumatoria de cada dgito multiplicado por el peso de su posicin (o el
producto escalar del vector por el vector peso). En particular, el vector peso ser (r n-1,
, r0, r-1, ..., r-k), donde r es la base.
En la prctica hay cuatro sistemas usados frecuentemente correspondiendo a las
bases 2 (binario), 8 (octal), 10 (decimal) y 16 (hexadecimal).
2- Sistemas Numricos de Dgito Signado
Este sistema puede ser considerado como una extensin del caso de Fixed-Radix
en el cual se advierten que los dgitos sean pesados tanto positiva como negativamente
en el conjunto {-, ..., -1, 0, 1,..., } donde es un entero positivo limitado. Un dado
valor numrico en este sistema podr tener ms de una representacin; por ello este
sistema es considerado redundante.
3- Sistema Numrico Residuo
A cada dgito no se le asigna un factor de peso, por lo que el orden de los dgitos
es irrelevante en la determinacin del valor del nmero. Adems, mltiples bases son
asignadas a diferentes dgitos.
Un nmero es representado por una n-tupla X={r 1, ..., rn}m con respecto a otra
n-tupla M={m1, ..., mn}, cada ri se denomina residuo de X mdulo m i, donde todos los
mi son primos.
4- Sistemas Numricos Racionales
Estos sistemas representan las cantidades numricas como fracciones en
trminos de pares de enteros numerador/denominador. Las operaciones bsicas +,-,*,/
de estos nmeros siempre dan nmeros racionales, luego estas operaciones son
cerradas, sin recurrir a precisin infinita. Una situacin que torna esto difcil es el caso
de que numerador/denominador pueden hacerse muy grandes rpidamente.
5- Sistemas Numricos Logartmicos
Estos sistemas emplean un nmero real N>1 como base.
El conjunto de nmeros is definido por el espacio logartmico LN={x: | |x|=N i, i
es entero}{0}.
La idea de aplicar expresiones exponenciales surge para habilitar redondeo
geomtrico mas que aritmtico para aumentar la exactitud.
CLASIFICACION DE LAS OPERACIONES ARITMETICAS
A- Operaciones Aritmticas Estndar.
Esta incluye las 4 funciones aritmticas primitivas: suma, resta, multiplicacin y
divisin tanto en punto fijo como en punto flotante. Toda otra funcin matemtica
podr ser expresada en trminos de estas cuatro. Respecto a los dos modos de
operacin podemos decir:
1.
Punto fijo (FXP) es usado normalmente en problemas con datos con FixedRadix-Point, como los encontrados en aplicaciones comerciales o clculos estadsticos.
FXP se puede subdividir en dos subclases, de acuerdo a la posicin aparente del punto.
En aritmtica entera todos los resultados se alinean en el extremo derecho de los
registros, como si el punto estuviese en la derecha. En la aritmtica fraccionaria todos
los resultados, independientemente de su longitud, se alinean a la izquierda de los
registros.
2.
Punto Flotante (FLP) es usado principalmente en cmputos de tipo
cientfico e ingenieril, en los cuales se requiere frecuentemente escalamiento. FLP
puede a su vez subdividirse en dos subclases de acuerdo al formato de datos. Cuando
superior a 2, dado que 3/ln3<2/ln2. Pero como los circuitos elctricos de dos estados
son ciertamente ms comunes que los de tres, una base 2 resultar ms atractiva.
CAMBIO DE BASE
Veamos el problema general de convertir un nmero escrito en una base de
salida bs, a un nmero en una base destino bd. Esto puede ser manejado de varias
maneras. Los mtodos ms comunes o bien emplean multiplicacin o divisin. Se debe
distinguir entre la conversin de nmeros enteros y fraccionarios.
A. Conversin de enteros
Sea (xn, ..., x0) un entero en base bs y (xm, ..., x0) su conversin a base bd.
A.1. Mtodo del producto (usando aritmtica destino)
Realizamos la suma que corresponde a la ponderacin en aritmtica destino.
|X| = xi*bsi
A.2. Mtodo de la divisin (usando aritmtica origen)
Se tiene X0= |x| mod bd, donde la divisin se realiza en base b s. Continuando en
igual sentido para los dgitos sucesivos, desde el menos significativo al ms
significativo, se tiene:
X
= Q0 * bd + X0
Q0
= Q1 * bd + X1
X0
= |X| mod bd
X1
= |Q1| mod bd
B. Conversin de fracciones
Se tiene ahora (x-1, x-2, ..., x-n) y se desea la conversin a (x-1, x-2, ..., x-m). La
primer cosa importante a destacar es que un nmero finito de dgitos en base b s, no
necesariamente tiene una representacin completa en base b d. Sin embargo, uno
puede obtener los primeros m dgitos de la conversin usando multiplicacin o divisin.
B.1. Mtodo del Producto (usando aritmtica origen)
Se multiplica por la base destino obteniendo el dgito ms significativo, fuera de
la fraccin, la parte fraccionaria de |x|*bd se usar para computar el siguiente dgito
ms significativo.
X-1= |x|*bd
B.2. Mtodo de la Divisin (usando aritmtica destino)
Simplemente se pondera cada uno de los Xi usando aritmtica bd.
|X|= Xi*bdi
-1i-m
Muy a menudo se desea convertir de binario (octal o hexadecimal) a decimal, y
viceversa. Para calcular a mano, acostumbrados a la aritmtica decimal, se preferirn
los mtodos A.1 y B.2 cuando se convierte de binario a decimal, y los mtodos A.2 y
B.1 cuando se convierte de decimal a binario. Cuando el procedimiento se automatiza,
por programa o microprograma, la divisin debe evitarse y la aritmtica binaria es
preferible.
Codificacin de Dgitos decimales en binario
Si se desea codificar cada dgito decimal, hay varias formas de representar con 4
bits un nmero decimal: BCD, GRAY, 5211 y EXCESO 3. De estos los ms populares
son BCD y GRAY. Es de notar que en algunos
casos trabajan con cdigo posicional, aunque Dig. Dec. BCD GRAY 5211 EXC3
mltiple base como sera BCD, y en otros no
0
0000 0010 0000 0011
posicional como EXCESO 3.
1
0001 0110 0001 0100
El cdigo BCD, tambin expresable como
2
0010 0111 0011 0101
8421, se lo conoce como 'BCD Natural'.
3
0011 0101 0101 0110
4
0100 0100 0111 0111
5
0101 1100 1000 1000
4
6
0110 1101 1010 1001
7
0111 1111 1100 1010
8
1000 1110 1110 1011
9
1001 1010 1111 1100
Obsrvese que cada peso coincide con los cuatro primeros pesos del sistema binario
natural. La ventaja del EXCESO 3 y 5211, ambos no posicionales, es su simetra segn
el eje que podemos trazar entre 4 y 5, se observa que la codificacin de dos nmeros
simtricos al eje es obtenida complementando cada uno de los bits de uno para pasar
al otro. Esto se conoce como autocomplementacin.
El acarreo binario en exceso 3 coincide con el decimal. En exceso 3, esto indica
que el carry generado en sumas con cdigos BCD con estas caractersticas coincide con
el carry binario, esto es, el que se obtiene sumando en forma binaria los 1 y 0, que
codifican el dgito decimal, lo cual facilita la implementacin de los mismos.
Los algoritmos aritmtcos pueden ser implementados en la computacin digital
moderna mediante software, hardware o firmware, o una combinacin de estas tres
soluciones. Hacerlo en software resulta lento, y ocupa un gran espacio en memoria
para las rutinas, aunque era ms barato en los comienzos de la industria de la
computacin. Con el rpidamente decreciente costo del hardware, muy pocas
computadoras usan software para evaluar funciones que se usan frecuentemente.
Implementar un algoritmo aritmtico por hardware provee una velocidad de ejecucin
mayor y ocupacin mnima de espacio en memoria.
Representacin de Nmeros
Un nmero signado podr ser positivo o negativo, pero no ambos. Usualmente el
dgito ms a la izquierda de un nmero en sistema posicional es reservado para el
signo. Considrese el siguiente nmero en base r A=(a n-1 an-2 .... a0)r. Donde el signo,
es decir el dgito an-1 ser 0 o r-1, dependiendo de si A0 o A<0 respectivamente. Los
restantes dgitos en A especifican o bien la verdadera magnitud o el complemento a la
base, o a la base disminuida.
Dado que A es un nmero posicional, se puede (debe) ubicar el punto para
distinguir la parte entera de la fraccionaria. Si se adopta una posicin fija para el
punto, se lo llama entonces nmero de punto fijo (fixed-point number).
Tericamente, el punto puede ser localizado entre dos dgitos adyacentes
cualesquiera en una representacin, pero hay dos representaciones aceptadas
comnmente, ambas son intercambiables. Las dos posiciones elegidas para el punto
son el extremo izquierdo o el derecho de la magnitud del nmero. En el primer caso el
punto cae entre el bit de signo a n-1 y la magnitud an-2, esto conduce a nmeros
fraccionarios estrictamente menores que uno. En el segundo caso el punto pasa a la
derecha del dgito menos significativo a0, lo que lleva a nmeros enteros. Estas
representaciones son esencialmente equivalentes. Se puede convertir de una a otra
multiplicando o dividiendo por un factor rn-1.
Ahora, para representar la magnitud, hay tres diferentes notaciones. Sea la
versin negativa del nmero A=(0 an-2 an-3 ... a0)r, donde el bit de signo ahora es r-1.
1. Signo Magnitud
=((r-1) an-2 an-3 ... a0)r donde n-2i0 son los dgitos de magnitud. Obviamente
un nmero difiere de su versin negativa, slo en el bit de signo.
Rango:
(11...11)2
A (01....11)2
-(2n-1-1)
A 2n-1-1
Representacin del cero: 000...0 y 100...0 (dirty zero)
El prinicpal problema de la representacin signo-magnitud aparece a la hora de
sumar nmeros de distinto signo, pues esto implica que debemos comparar las
magnitudes de ambos operandos para determinar el signo del resultado.
2. Complemento a la Base Disminuida (Disminished Radix Complement)
=((r-1) n-2 n-3 ... 0)r donde i=(r-1)-ai. Esto hace que =rn-1-A.
Rango:
(10...00)2
A (01....11)2
-(2n-1-1)
A 2n-1-1
Representacin del cero: 000...0 y 111...1 (dirty zero)
3. Complemento a la Base (Radix Complement)
=(((r-1) n-2 n-3 ... 0)+1)r donde =rn-A y lo tratamos como un pseudopositivo.
Rango:
(10...00)2
A (01....11)2
-2n-1
A 2n-1-1
Representacin del cero: 000...0
La suma y la resta resultar ms sencilla que en DRC, pero como se ve,
complementar resulta un poco ms difcil, pues implica una suma que podr afectar a
todos los n bits. Esta facilidad en la suma y resta se ver amplificada a la hora de
considerar la multiplicacin y la divisin. Esta es una de las razones, adems de la
representacin nica del 0 (clean zero), por la cual RC parece ser el sistema de
representation preferido actualmente.
Las tres notaciones harn trivial la distincin entre positivos y negativos, adems
de tener rangos iguales (o casi iguales) para representar tanto positivos como
negativos. Se puede ver, adems, que para llenar una palabra si el nmero no es de
longitud n-1, se completar con 0's para signo-magnitud el intervalo entre la magnitud
y el signo, sea el ya el nmero negativo o positivo. En cambio, para DRC y RC, se
extender el signo hacia la derecha hasta alcanzar la magnitud en s, es decir, se
completar con 0's si es positivo o con 1's si es negativo.
Algoritmos de Suma y Resta
Signo-Magnitud
Sean X=(xn-1 ... x0) e Y=(yn-1 ... y0) de forma tal que X+Y=S=(sn-1 ... s0).
Si xn-1=yn-1, es decir, si tienen el mismo signo entonces:
se suman las magnitudes y sn-1=xn-1=yn-1.
si Carryn-1=1 entonces se produjo un Overflow.
Si xn-1yn-1, es decir, si son de distinto signo entonces:
si |X|>|Y|, realizo |X|-|Y|
sn-1 ser el signo del de mayor magnitud, es decir, s n-1=xn-1.
Disminished Radix Complement
En DRC para sumar se suman como si fuera todo el nmero incluyendo el signo, una
magnitud.
Si X e Y son positivos entonces el Carryn=0. Se produce overflow si sn-1=1.
Si X e Y son de distinto signo:
si Carryn=0 el resultado es correcto.
si Carryn=1, se descarta el carry y se suma 1 a la posicin menos significativa.
Si X e Y son negativos entonces el Carryn=1, lo descartamos y se suma 1 en la posicin
menos significativa. Se produce overflow si sn-1=0.
En general se produce overflow si CarrynCarryn-1=1.
Radix Complement
En RC para sumar se suman como si fuera todo el nmero incluyendo el signo, una
magnitud
Si X e Y son positivos entonces el Carryn=0. Se produce overflow si sn-1=1.
Si X e Y son de distinto signo:
si Carryn=0 el resultado es correcto.
si Carryn=1, se descarta el carry y el resultado es correcto.
Si X e Y son negativos entonces el Carryn=1, lo descartamos y el resultado es correcto.
Teora de redondeo
En muchos casos el resultado de una operacin entre nmeros mquina no ser
representable, es decir, no ser un nmero mquina, y deber ser sometido a un
redondeo.
Al truncar, simplemente eliminamos los bits sobrantes, as el error mximo al
que me enfrento es 1 LSB. Al redondear, eliminamos los bits sobrantes, pero ajustamos
la parte ms significativa sumandole 1 LSB si el dgito ms significativo de la parte
sobrante es 1; de esta forma el error mximo al que me expongo es LSB.
El intervalo entre dos nmeros mquina, normalizados, adyacentes es b e.2-m
donde e es el exponente y m es la cantidad de dgitos en la mantisa. Esto representa el
error absoluto. El error relativo de un nmero mquina m y un X ser (x-m)/x
Una descripcin algebraica ms rigurosa debe distinguir nmeros positivos y
negativos, a los efectos de normalizar los mtodos existentes. Habamos visto la
funcin de redondeo como :R->M definida para todo a,b R tal que se verifica
(a)(b) toda vez que ab.
Se denomina redondeo optimal si para todo aM, (a)=a. En la prctica esto
ser as para cualquier representacin razonable. Un redondeo optimal implica que si
aR y m1, m2 son dos nmeros consecutivos de M con m1<a<m2, luego o bien
(a)=m1 (a)=m2.
El redondeo optimal hacia abajo (-) es (a)= MAX{mM tal que ma}.
El redondeo optimal hacia arriba (+) es (a)= MIN{mM tal que ma}.
En funcin de estos dos redondeos, podemos definir 3 redondeos simtricos de
inters:
Truncado, o redondeo hacia 0, es
T(a)= {(a) si a0 o (a) si a<0}
Aumentacin, o prox. Biased, es
A(a)= {(a) si a0 o (a) si a<0}
(a) si (a)a<mitad
Proximidad es
(a) si mitad<a(a)
si a=mitad entonces
{(a) si a0 o (a) si a<0}
mitad = ((a) + (a))/2
T siempre redondea hacia el cero, A redondea alejndose del cero y P siempre
adopta el nmero mquina ms cercano, y en el caso de ser el de la mitad elige el de
mayor magnitud. La mayora de las mquinas elige o bien T o P, un poco como vimos.
El diseador del sistema de punto flotante debe realizar decisiones que afectan tanto la
velocidad de cmputo como a la exactitud. Se puede demostrar que la mejor precisin
se obtiene con bases bajas y mtodos de redondeo sofisticados; y su contraposicin,
velocidades de cmputo se incrementan con valores grandes de la base y mtodos de
redondeo sencillos como truncado. Un buen mtodo de redondeo incrementa la
precisin pero a su vez puede reducir (o afectar) la velocidad de todo el sistema.
La norma EE754 busca enstandarizar la representacin. Se tiene 1 bit para el
signo de la mantisa, 8 para el exponente y 23 para la mantisa. El exponente se
representa en exceso 127 y la mantisa es fraccionaria en signo magnitud con punto a
la izquierda. Se asume un hidden bit a la izquierda de la mantisa antes del punto, dado
que trabajar en singo magnitud, normalizado con base 2, el dgito ms significativo va
a ser 1 por lo que resulta redundante. La norma adopta base 2 porque con el hidden
bit se tiene 1 bit ms en la mantisa, lo que reduce el error absoluto a la mitad.
La norma hace reserva del exponente mnimo 0, y el mximo 255 para casos
especiales. Si el exponente es 0 y la magnitud 0, se est representando el 0, si el
exponente es 0 y la mantisa es distinta de 0 tenemos un denormal, un nmero con el
menor exponente ms chico que el menor normalizado. Esto permite in acercamiento
gradual al 0. Si el exponente es 255 y la mantisa 0 se representar el infinito, si el
exponente es 255 y la mantisa no es 0 se tiene un NaN.