Notas compl. cap. 4. - ¡Bienvenido a paloalto.unileon.es!

Anuncio
Notas complementarias sobre aritmética
computacional.
José María Foces Morán, Universidad de León
0.1. CAMBIOS DE BASE
0.1.
3
Cambios de base
Exercise 1. Realizad los cambios de base indicados y la comprobación
correspondiente mediante el cambio de base inverso:
Para realizar estos ejercicios, tened en cuenta que en los cambios a base
10, recomendamos emplear el TFN en aritmética sin signo (TFN/ASS) para
números enteros o para números en coma fija:
Xb =
i=−m
X
xi · bi
i=n−1
Exercise 2. 8759 = X10
8759 = 8 · 92 + 7 · 91 + 5 · 90 = 648 + 63 + 5 = 71610
En los cambios de base desde base 10 a cualquier otra base, recomendamos
la aplicación del teorema de la división entera (Por la base de destino). Recordad
que x mod b ⊆ {0, 1, 2, ..., b − 1}. La conversión de la parte fraccionaria se lleva
a cabo mediante multiplicaciones sucesivas, en cada una de ellas comprobando
el transporte producido a la parte entera; este proceso se detiene cuando se ha
llegado a una determinada precisión prefijada de antemano, porque, un número
en coma fija en una determinada base puede necesitar un número finito de cifras,
mientras que en otra base, puede necesitar un número infinito de cifras con una
cierta periodicidad. Como comprobación, realizaremos ahora el cambio inverso:
Exercise 3. 71610 = X10
71610 = 9 · 79 + 5
7910 = 9 · 8 + 7
810 = 9 · 0 + 8
por tanto: 71610 = 8759
Exercise 4. 2F C16 = X10
Exercise. 4A8E 16 = X10
Exercise 5. 6510 = X2
Exercise. 12710 = X2
Exercise 6. 17, 29310 = X2
En un primer paso calculamos la parte entera: 1710 = 24 + 20 = 000100012 .
Ahora, calculamos la parte fraccionaria mediante multiplicaciones sucesivas:
0, 29310 × 2 = 0, 58610 , el transporte es 0
0, 58610 × 2 = 1, 17210 , el transporte es 1
0, 17210 × 2 = 0, 34410 , el transporte es 0
0, 34410 × 2 = 0, 68810 , el transporte es 0
0, 68810 × 2 = 1, 37610 , el transporte es 1
0, 37610 × 2 = 0, 75210 , el transporte es 0
0, 75210 × 2 = 1, 50410 , el transporte es 1
0, 50410 × 2 = 1, 00810 , el transporte es 1 y detendremos aquí el proceso de
conversión, el resultado es el siguiente:
0, 29310 = 0, 010010112 , reuniendo las prates entera y fraccionaria, obtenemos el siguiente resultado:
4
17, 29310 = 00010010, 010010112 . Por último, aplicamos el TFN/ASS para
comprobar el resultado:
00010001, 010010112 = 1 · 24 + 1 · 20 + 1 · 2−2 + 1 · 2−5 + 1 · 2−7 + 1 · 2−8 =
17, 29296875310 ' 17, 29310 . Hemos obtenido una representación aproximada
del número original en base 10.
Exercise 7. f 3a816 = X10 realizando la conversión a base 2, en primer
lugar.
Puesto que 16 = 24 , haremos la conversión a base 2 considerando que
cada dígito hex representa 4 bits (bn → b) y, teniendo en cuenta la tabla de
conversión de binario natural a hex, convertimos cada dígito hex en cuatro bits
em binario natural:
f 3a816 = 1111 0011 1010 10002 , ahora, aplicando TFN/ASS convertimos a
base 10:
1111 0011 1010 10002 = 1 · 215 + 1 · 214 + 1 · 213 + 1 · 212 + 1 · 29 + 1 · 28 +
1 · 27 + 1 · 25 + 1 · 23 = 6237610
También, podríamos haber convertido de base 16 a base 10 directamente,
mediante TFN/ASS, teniendo en cuenta el valor de cada dígito hex en base 10:
f 3a816 = f16 · 163 + 316 · 162 + a16 · 161 + 816 · 160 = 1510 · 163 + 310 ·
2
16 + 1010 · 161 + 810 · 160 = 6237610
Exercise 8. ab00, 1a0f16 = X10
Emplead el mismo procedimiento del ejercicio anterior.
Exercise 9. 10001100, 000000012 = X16
Observad que el cambio es de b → bn , por tanto, agruparemos en grupos
de 4 bits, cada uno de los cuales dará lugar a un dígito hex.
0.2.
Realizad las siguientes operaciones aritméticas directamente en
las bases utilizadas. Suponemos que estamos trabajando en
aritmética sin signo (ASS) en todos los casos.
Exercise 10. 358216 + AF 1816 = E49A16
La suma en base 16 produce transporte cuando la suma de dos dígitos
supera el valor F, ese transporte, como en las demás bases, se manifiesta como
un valor 1 que hay que sumar a los operandos que constituyen la columna
contigua izquierda. Puesto que la suma puede producir transporte, al sumar dos
operandos de n bits cada uno, el resultado se tendrá que representar con n+1
bits, en general; a este transporte, en la suma, se le conoce como acarreo (carry)
o desbordamiento en aritmética sin signo.
Exercise 11. E49A16 − 358216
La resta se opera del mismo modo que la resta en base 10, teniendo en
cuenta que los transportes se producen al sobrepasar el valor F. Comprobad
que el resultado es correcto comparándolo con el primer operando del ejercicio
anterior. Tened en cuenta que la resta, en ningún caso produce desbordamiento.
Exercise 12. Realizad los dos ejercicios anteriores cambiando los operandos a base 2, previamente.
0.5. PRECISIÓN Y EXACTITUD EN LA REPRESENTACIÓN DE NÚMEROS FRACCIONARIOS EN COMA FIJA.
5
0.3.
Multiplicación por bk , k ⊆ Z.
La multiplicación de un número escrito en base b por bk produce un desplazamiento de k dígitos a la izquierda si k es positivo, si k es negativo, produce
el mismo desplzamiento, pero a la derecha. En el primer caso, tenemos una
multiplicación por b|k| , en el segundo caso, tenemos una división por b|k| .
Exercise 13. Calculad 1010012 × 26 aplicando la propiedad anterior.
Comprobad que el resultado es correcto.
Exercise 14. Calculad 1010012 × 2−6 aplicando la propiedad anterior.
Comprobad que el resultado es correcto.
Exercise 15. Realizad los ejercicios anteriores cambiando los operandos a
base 10 previamente.
Comprobad que los resultados son correctos.
Exercise 16. Calculad f 10216 × 16−2 .
Comprobad que el resultado obtenido es correcto.
0.4.
Definición de bit como unidad de medida de la entropía de
Shannon.
La entropía de Shannon mide la información producida al realizar un experimento aleatorio, por ejemplo, al tirar una moneda, podemos obtener cara o
cruz y, si suponemos que la moneda es físicamente simétrica, la probabilidad
de obtener cara será 1/2 igual a la probabilidad de obtener cruz. La información
producida al realizar cada instancia del experimento viene dada por la siguiente
fórmula conocida como entropía, la cual es debida a Claude Shannon:
r−1
X
1
Hr (S) =
pi · log2 bits
pi
i=0
En nuestro caso r = 2, por tanto: Hr (S) =
1
X
i=0
pi · log2
1
1
1
1 1
= · log2 2 + · log2 2 = + = 1bit
pi
2
2
2 2
El término bit, puede tomar dos significados:
BIT como binary digit o símbolo binario. Este es el sentido explicado
en clase.
Como unidad de medida de información o entropía de Shannon
Exercise 17. Calculad la información producida al tirar una moneda asimétrica cuya probabilidad de obtener cara es 0,1. Intuitivamente, antes de efectuar
ningún cálculo ¿Creéis que se produce más información en este caso, o en el
anterior? Explicad el porqué.
0.5.
Precisión y exactitud en la representación de números
fraccionarios en coma fija.
Los computadores digitales, habitualmente, representan sus estados mediante dos niveles eléctricos, los cuales son representados mediante los símbolos 0 y
1. Los niveles eléctricos concretos dependen de la tecnología electrónica concreta empleada en cada caso, por ejemplo, un mismo computador puede emplear
6
niveles eléctricos diferentes en el circuito integrado que contiene la CPU y en
la memoria, por ello, es habitual que se empleen interfaces que adaptan los
niveles cuando se produce la conexión de un elemento a otro. En cualquier caso, los estados posibles se representan mediante los símbolos 0 y 1. Toda la
información que maneja un computador se representa mediante símbolos 0 y 1,
en concreto, concatenaciones de estos dos símbolos que pueden dar lugar a las
representaciones de los tipos de datos enteros, fraccionarios, caracteres, etc.
El computador que estudiamos en esta asignatura tiene una arquitectura de
set de instrucciones denominada MIPS-32, indicando que su ancho de palabra
(word) es de 32 bits, lo cual significa que los registros de propósito general son
de 32 bits, por tanto, este microprocesador puede llevar a cabo una operación
aritmética con dos operandos, cada uno de ellos de 32 bits de ancho. Ahora,
podríamos preguntarnos ¿Qué significado tiene cualquiera de las posibles words?
Si conisderamos que el significado es número entero considerado en aritmética
sin signo (ASS) ¿Qué rango de enteros se pueden representar? Estas y, otras
preguntas similares, nos proponemos responderlas en las secciones que siguen.
0.5.1. Error de representación. Los computadores digitales tienen una
capacidad de representación finita y, en general, para un número cualquiera,
pueden proveer solamente una aproximación, el error cometido al tomar la representación computaciónal (Una aproximación) por el valor real viene dado por
la diferencia entre ambos, tomada en valor absoluto:
εrep = |X − Xaprox |
Este error ha de estar acotado para poder emplear al computador en la
realización de cálculos aritméticos ya que, obviamente, afecta a la exactitud de
los mismos.
0.5.2. Eficiencia de una representación binaria. Ya hemos comentado
anteriormente que toda la información manejada por un computador está representada mediante concatenaciones de bits, por ejemplo, los enteros con signo
(ACS) se representan mediante words-32, de lo cual, resulta un rango de enteros
con signo representables y una precisión.
El rango viene dado por el menor y el mayor de la representación, por
ejemplo, en MIPS, empleando complemento a 2, tenemos: V R2,32 = 232 =
4Gpalabras, de las cuales, la mitad son negativas y la otra
mitad son positivas o
nulas, es decir, el rango viene dado por: −231 , 231 − 1 . La precisión viene dada
por la separación mínima entre dos enteros consecutivos cualesquiera, es decir,
1. La precisión que emplearemos en las representaciones, tanto de enteros como
de fraccionarios en coma fija, es una precisión fija. Existe una representación de
números reales aproximados, conocida como representación en punto flotante,
la cual, presenta una precisión variable.
El error cometido al usar una representación de rango y precisión finitas
se produce al no poder representar cualquier número con exactitud arbitraria,
por ejemplo, al representar el número 29, 052 en un formato de coma fija con
dos dígitos para la parte enteros y dos dígitos para la parte fraccionaria, viene
dado por la siguiente expreesión, teniendo en cuenta que la precisión es 0, 01 y
que, por tanto, no existe ningún número entre 29, 05 y 29, 06. Supongamos que
elegimos como representación del número dado al número 29, 06:
εrep = |X − Xaprox | = |29, 06 − 29, 052|
0.5. PRECISIÓN Y EXACTITUD EN LA REPRESENTACIÓN DE NÚMEROS FRACCIONARIOS EN COMA FIJA.
7
Podríamos haber considerado escoger 29, 05, en cualquiera de los casos, el
error máximo vendrá dado por la precisión: 0,01. Los números que están fuera del
rango legítimo, al no poder representarse, no consideramos sus aproximaciones,
obviamente.
Nos encontramos con dos formas de llevar a cabo la aproximación:
1. Mediante un truncamiento. En este caso, simplemente descartamos los
dígitos del número que no pertenecen a la representación. En nuestro
caso, el truncamiento se llevaría a cabo del siguiente modo, sin realizar
ninguna operación de cálculo: 29, 052 → 29, 05. Es fácil comprender que
el error máximo está dado por la precisión, en este caso, el resultado es
aceptable porque el tercer dígito es un 2 y el error es 0, 002, pero, si
el número a representar hubiera sido 29, 059, el error cometido habría
sido 0, 009.
2. Mediante un redondeo. Sumamos la mitad de la precisión: 0,01
2 = 0, 005,
al número: 29, 052 + 0, 005 = 29, 057 y, a continuación, truncamos el
resultado: 29, 05. El error cometido es: 0, 002. ¿Qué error cometeríamos
en el caso de querer representar 29, 059? 29, 059 + 0, 005 = 29, 064,
el cual, al ser truncado resulta en: 29, 06, dando un error de εrep =
|29, 06 − 29, 059| = 0, 001.
Exercise 18. En una representación de coma fija con tres dígitos para la
parte entera y 3 dígitos para la parte fraccionaria, responded a las siguientes
cuestiones:
Calculad la precisión
Calculad el error de truncamiento cometido al representar 345, 001856.
Calculad el error de redondeo al redondear 345, 001856.
Repetid los cálculos de error para 345, 00119.
Exercise 19. En una representación de coma fija, en base binaria, con
tres dígitos para la parte entera y 3 dígitos para la parte fraccionaria, responded
a las siguientes cuestiones:
Calculad la precisión
Calculad el error de truncamiento cometido al representar 101, 01110.
Calculad el error de redondeo al redondear 101, 01110.
Descargar