Práctica 2 - Otros Sistemas de Codificación Organización del Computador 1 1er. Cuatrimestre 2006 Ejercicio 1 a) Expresar los siguientes números en base 10. 0, 12 0, 010112 0, 13 0, 47 b) Expresar los siguientes números en la base indicada, utilizando el método de la multiplicación. 0, 110 −→ base 2 0, 110 −→ base 3 0, 37510 −→ base 2 Ejercicio 2 a) Sean b1 y b2 dos números cualesquiera mayores que 1. Mostrar que: Si b1 divide a b2 , entonces: todo número racional expresable con una cantidad finita de dı́gitos en b1 es expresable con una cantidad finita de dı́gitos en b2 , pero no necesariamente al revés. Si b2 es una potencia de b1 , entonces: todo número racional es expresable con una cantidad finita de dı́gitos en b2 si y sólo si es expresable con una cantidad finita de dı́gitos en b1 . Si b1 y b2 son coprimos (i.e., no tienen divisores en común) entonces: ningún número racional (no entero) expresable con una cantidad finita de dı́gitos en b1 se puede expresar con una cantidad finita de dı́gitos en b2 . b) En base al ı́tem anterior, ¿qué relación hay respecto a la expresabilidad finita de números racionales entre las bases 2 y 10? ¿Y entre las bases 2 y 5? c) Decidir si está de acuerdo con la siguiente afirmación: “La naturaleza hizo más difı́cil la vida de los estudiantes de computación al dotarnos de meñiques, pero podrı́a haber sido mucho peor si encima nos privaba de la simetrı́a axial.”. Justificar. 1 Ejercicio 3 a) Suponga que se trabaja con una aritmética de precisión finita de 32 bits, sin signo. Responder las siguientes preguntas cuando a) los números se interpretan usando punto fijo binario de 4 posiciones; y b) los números se interpretan usando punto fijo decimal de 2 posiciones. a) ¿Cuáles son el máximo y el mı́nimo número que se pueden representar? b) ¿Cuáles son todos los números representables entre 0 y 1? c) ¿Cuántos números se pueden representar? b) Repetir el ı́tem anterior, pero esta vez suponiendo que los números de 32 bits se interpretan en notación complemento a 2. Ejercicio 4 a) Realizar las siguientes operaciones de punto flotante decimal con mantisa de cuatro dı́gitos y exponente de dos. Indicar en qué casos se produjo overflow o underflow: 0, 6020 × 1024 + 0, 0001 × 10−99 65 0, 550 × 10 / × 0, 8051 × 10−99 0,1000 × 10 −0, 0001 × 1043 b) ¿Cuál es la ventaja de trabajar con números normalizados? Ejercicio 5 Responder las siguientes preguntas sobre los formatos IEEE 754 de precisión simple y doble: a) ¿Con cuántos bits se representan los números en estos sistemas? b) ¿Cuántos bits tiene el significante? c) ¿Cuántos bits tiene el exponente? d) ¿Con qué sistema está representado el exponente? (sin signo, notación complemento a 2, exceso a. . . , etc) e) ¿Con qué sistema está representada la mantisa? f) ¿Entre qué valores de R se encuentran los valores representados por el significante cuando el número se encuentra normalizado? g) ¿Cuál es el intervalo de valores posibles del exponente? h) ¿Cuáles son los números que representan los infinitos? i) ¿Cuáles números representan el cero? j) ¿Cuáles son los rangos del exponente y el significante que representan un número normalizado? k) ¿Cuáles son los rangos del exponente y el significante que representan un número desnormalizado? l) ¿Cuáles son los rangos del exponente y el significante que representan un NaN (Not a Number)? 2 Ejercicio 6 a) Convertir los siguientes números al formato IEEE 754 de precisión simple. Representar los resultados con ocho dı́gitos hexadecimales. 910 −0, 1562510 6, 12510 b) ¿Qué números representan los siguientes números de punto flotante IEEE 754 de precisión simple?: 42E48000 00800000 Ejercicio 7 a) Expresar el string “¿A quién coño se le ocurrió usar 5 sı́mbolos arriba de 127 en esta frase?” como una secuencia de bytes (expresados en hexadecimal), utilizando las siguientes codificaciones: ISO-8859-1 UTF-8 UTF-16LE (i.e., UTF-16 en little-endian) b) Dada la siguiente secuencia de bytes (ordenada de izquierda a derecha y de arriba a abajo) C2 73 A1 74 45 72 73 69 74 6E 6F 67 20 20 6E 65 6F 6E 20 20 65 55 73 54 20 46 75 2D 6E 38 20 21 Decidir los valores que representa cuando se la interpreta: Como un vector (array) de 8 números de 32 bits, en notación complemento a 2, little endian Como una matriz de 4 × 4 números de 16 bits, sin signo, big endian Como dos números de punto flotante IEEE 754 de precisión doble, little endian Como un string UTF-8 3