Organización del Computador 1 Representación binaria de Números Reales Sistemas de Representación Representación de la Información ¾ Bit: (Binary Digit) Un bit es un dígito binario. Como tal, puede tener 2 valores posibles, 1 y 0. Como los circuitos de una computadora pueden asumir 2 estados, los bits se utilizan para representar el estado de los circuitos. Y siendo uno de estos circuitos la unidad mínima de almacenamiento que posee una computadora, el bit será la mínima unidad de representación. ¾ Byte: En términos generales, un byte es un conjunto de bits. En el presente, se entiende como byte al conjunto de 8 bits. ¾ Palabra: Una palabra es el conjunto de bits que pueden ser accedidos por la CPU en un requerimiento de lectura/escritura. Tipo de Datos que se representan con unos y ceros ¾ Números: enteros positivos y negativos, y fracciones. ¾ Letras: Todas las letras del alfabeto (mayúsculas y minúsculas), símbolos de puntuación, símbolos matemáticos, etc. ¾ Caracteres de control: caracteres para limpiar la pantalla, saltar una línea, etc. ¾ Instrucciones de programa. ¾ Direcciones de memoria. Representación de números en binario ¾ Representar el número decimal +40 en formato binario ocupando dos bytes. +40 equivale a: 00000000 00101000 (en hexadecimal: 00 28) tanto en notación complemento como sin signo. ¾ Representar el número decimal -40 en binario. En este caso únicamente se puede utilizar notación complemento: -40 equivale a: 11111111 11011000 (en hexadecimal: FF D8) Decimal 10 + (-3) +7 Complemento a 2 00001010 11111101 1 00000111 se descarta el acarreo Tipos de datos: Números reales ¾ ¾ ¾ El rango de los números reales comprende desde -∞ hasta +∞. Los registros de un procesador tienen resolución finita. Por lo tanto un computador solo puede representar un sub conjunto de R . (No es solo un tema de magnitud sino de resolución) Representación binaria de Números Reales ¾ En general podemos formalizar la representación de un número real expresado en los siguientes formatos: z Punto Fijo • Con Signo • Con Notación Complemento a 2 z Punto Flotante Representación Punto Fijo con Signo ¾ Se representan mediante una expresión del tipo: ¾ (anan-1 …a0 . a-1a-2 …a-m)2 = (-1)s⋅(an2n+…+ a020+ a-1+ a 2-2+ …+ a -m) 2 2 1 -2 -m ¾ donde z s es 0 si el número es positivo y 1 si es negativo z ai ∈ enteros y 0 ≤ai ≤ 1, para todo i = -m, …-1, 0, 1, …n ¾ Distancia entre dos números consecutivos es 2-m. ¾ Deja de ser un rango continuo de números para transformarse en un rango discreto Representación Punto Fijo con Notación Complemento a 2 ¾ El problema consiste en representar los números negativos ¾ Empleamos para resolverlo el mismo criterio que en el complemento a 2 de enteros. ¾ Para representar el número –N en punto fijo con notación complemento a 2 se hace 2n - N Truncamiento y Redondeo ¾ ¾ ¾ ¾ Cuando la cantidad de dígitos disponible no alcanza para representar el número … Problema: Representar un número de n dígitos decimales en un sistema con m dígitos decimales, siendo m < n Truncamiento: descarta los dígitos fraccionarios de orden mayor a m. El error es de 1 bit. Redondeo: descarta los dígitos fraccionarios de orden mayor a m pero se suma 1 al menos significativo en caso que el bit inmediato descartado valga 1. Equivale a truncar y sumarle 0,5*2-m . El error es de ½ bit. Truncamiento y Redondeo para Notación en complemento a 2 ¾ Cuando se desea hallar el complemento de un número w, primero se deberá: 1. Calcular la aproximación a w por truncamiento o redondeo. 2. Calcular el complemento del número aproximado hallado en el paso 1 ¾ Ver casos para w>0, w=0, w<0 según se trate de truncamiento o redondeo. Números reales: Representación ¾ Para el caso de los números reales se trabaja en notación científica. n = ±f *10e z z z z ¾ -725.832 = -7.25832 . 102 = -725.832 x 100 3.14 = 0.314 * 101 = 3.14 * 100 0.000001 = 0.1 * 10-5 = 1.0 * 10-6 1941 = 0.1941 * 104 = 1.941 * 103 Para unificar la representación se recurre a la notación científica normalizada, en donde 0 .1 ≤ f < 1 e es un entero con signo Números reales: Representación ¾ En el sistema binario la expresión de un número en notación científica normalizada es n = ±f * 2e ¾ en donde 0 .5 ≤ f < 1 e es un entero con signo Representación en Punto Flotante ¾ Se representan con los pares de valores (m, e), denotando: (m, e) = m⋅be ¾ ¾ ¾ ¾ m llamado mantisa, y que representa un número fraccionario e, llamado exponente, al cual se debe elevar la base numérica (b) de representación para obtener el valor real Mantisa y exponente pueden representarse: z con signo z sin signo z con notación complemento z con notación exceso m. Para que las representaciones sean únicas, la mantisa deberá estar normalizada. Punto Flotante Normalizado Conversión de un número al formato punto flotante normalizado Dado un número w que pertenece a los reales, planteamos el método para obtener su representación de punto flotante normalizado en base 2. Se notará con e al exponente y con f a la fracción. ¾ ¾ ¾ Determinar el exponente. Para ello hallar el valor de e que satisface 2e-1 ≤ |w| < 2e. Determinar la fracción y hallar su representación en base 2. Por definición, |f | = |w| / 2e. Armar la representación del número según la convención que se haya acordado. Por lo general, se establece que el primer dígito de la representación representa al signo de la fracción, los k dígitos siguientes al exponente en alguna notación (con complemento o exceso m) y los dígitos siguientes a la fracción. Punto Flotante: Formato IEEE 574 ¾ IEEE (Institute of Electrical and Electronics Engineers, Inc.) ¾ El Standard IEEE 754 para punto flotante binario es el mas ampliamente utilizado. En este Standard se especifican los formatos para 32 bits, 64 bits, y 80bits. IEEE 574: Rangos Problemas que surgen del trabajo con números de Punto Flotante ¾ Overflow, underflow y números no inicializados. ¾ El estándar IEEE 574 trata con estos problemas de manera explícita, y define además de los números normalizados, otros cuatro tipos de números, que se muestran a continuación. z Números finitos de-normalizados z Números finitos normalizados z Ceros signados z Infinitos signados z NaNs (Not a Number) z Números Indefinidos Problemas que surgen del trabajo con números de Punto Flotante Ceros signados ¾ ¾ ¾ ¾ Una operación puede dar +0 o -0 en función del bit de signo. En ambos casos el valor es el mismo. El signo de un resultado cero depende de la operación en sí y del modo de redondeo utilizado. Los ceros signados ayudan a interpretar el intervalo aritmético en el que se ubicaría el resultado si la precisión aritmética fuese mayor. Indican la dirección desde la cual ocurrió el redondeo a cero, o el signo de un infinito que fue invertido. Números finitos normalizados ¾ El rango de éstos números se compone de todos los valores finitos distintos de cero codificables en formato de números reales entre 0 e ∞. ¾ ¾ ¾ En el formato de punto flotante simple precisión estos números se componen de todos aquellos cuyos exponentes desplazados van de 1 a 254, (no desplazados van de -126 a 127). Cuando se aproximan a cero, estos números no pueden seguir expresándose en este formato, ya que el rango del exponente no puede compensar el desplazamiento a izquierda del punto decimal. Cuando se llega a un exponente cero en un número normalizado, se pasa al rango de-normalizado. Números finitos de-normalizados ¾ ¾ ¾ En general las operaciones entre números normalizados arrojan como resultado otro número normalizado. Si hay underflow se pasa a trabajar en formato denormalizado. Ej: Bits de pérdida de precisión Infinitos signados ¾ ¾ +∞ y -∞, representan los máximos números reales positivo y negativo representables en formato de unto flotante La mantisa siempre es 1.000....00, y el máximo exponente desplazado representable (p. Ej. 255 para precisión simple) NaNs ¾ ¾ ¾ ¾ Not a Number. No son parte del rango de números reales. QNaN: Quiet NaN tiene el bit mas significativo fraccional en 1. Pueden propagarse por posteriores operaciones sin generar una excepción. SNaN: Signaled NAN. Tiene en cero el bit fraccional mas significativo. Resulta de una operación inválida de punto flotante. Tipos de datos: Números reales 1. El bit entero está implícito y no se almacena para formatos single-precision y double-precision. 2. La fracción para codificación de SNaN debe ser distinta de cero, con el bit mas significativo en 0. ASCII ¾ ¾ ¾ ¾ ¾ American Standard Code for Information Interchange Hay 95 caracteres ASCII imprimibles, numerados del 32 al 126. Es un código de caracteres basado en el alfabeto latino tal como se usa en inglés moderno y en otras lenguas occidentales. Fue creado en 1963 por el Comité Estadounidense de Estándares (ASA, conocido desde 1969 como el Instituto Estadounidense de Estándares Nacionales, o ANSI) como una refundición o evolución de los conjuntos de códigos utilizados entonces en telegrafía. En 1967, se incluyeron las minúsculas, y se redefinieron algunos códigos de control para formar el código conocido como US-ASCII. ASCII ¾ ¾ ¾ ¾ El código ASCII utiliza 7 bits para representar los caracteres, aunque inicialmente empleaba un bit adicional (bit de paridad) para detectar errores en la transmisión. A menudo se llama incorrectamente ASCII a otros códigos de caracteres de 8 bits, como el estándar ISO-8859-1 que es una extensión que utiliza 8 bits para proporcionar caracteres adicionales usados en idiomas distintos al inglés. En la actualidad define códigos para 33 caracteres no imprimibles, de los cuales la mayoría son caracteres de control obsoletos que tienen efecto sobre como se procesa el texto, más otros 95 caracteres imprimibles que les siguen en la numeración (empezando por el carácter espacio). Casi todos los sistemas informáticos actuales utilizan el código ASCII o una extensión compatible para representar textos y para el control de dispositivos que manejan texto. ISO 8859-1 Unicode ¾ ¾ ¾ Estándar industrial cuyo objetivo es proporcionar el medio por el cual un texto en cualquier forma e idioma pueda ser codificado para el uso informático. El establecimiento de Unicode ha involucrado un ambicioso proyecto para reemplazar los esquemas de codificación de caracteres existentes, muchos de los cuales están muy limitados en tamaño y son incompatibles con entornos multilingües. Implementado en un número considerable de tecnologías recientes, que incluyen XML, Java y Sistemas Operativos modernos. UTF-8 ¾ UTF-8 (8-bit Unicode Transformation Format) es una norma de transmisión de longitud variable para caracteres codificados utilizando Unicode. ¾ Usa grupos de bytes para representar el estándar de Unicode para los alfabetos de muchos de los lenguajes del mundo. ¾ Especialmente útil para la transmisión sobre sistemas de correo de 8 bits. ¾ Usa 1 a 4 bytes por carácter, en función del símbolo Unicode. P.Ej. se necesita un solo byte en UTF-8 para codificar los 128 caracteres US_ASCII en el rango U+0000 a U+007F Unicode. ¾ No es afectado al utilizar compresión de datos. ¾ El IETF requiere que todos los protocolos de Internet indiquen qué codificación utilizan para los textos y que UTF-8 esté entre las mismas. UTF-8: Ventajas ¾ Puede codificar cualquier carácter. ¾ Ahorra espacio respecto de UTF-16 o UTF-32 que utilizan muchos caracteres ASCII de 7 bits. ¾ Una secuencia de bytes para un carácter jamás será parte de una secuencia más larga de otro carácter como lo hacían viejas codificaciones. ¾ El primer byte de una secuencia multi-byte es suficiente para determinar la longitud de una secuencia multi-byte. Esto hace muy simple extraer una subcadena de una cadena dada sin elaborar un análisis exhaustivo. UTF-8: Ventajas ¾ Está diseñado para que los bytes codificados nunca tomen alguno de los valores de los caracteres especiales de ASCII, previniendo problemas de compatibilidad con librerías y sistemas operativos legacy como la ANSI C. ¾ Las cadenas en UTF-8 pueden ser ordenadas usando rutinas de ordenamiento estándar orientadas a byte. ¾ UTF-8 es el valor predeterminado para el formato XML. UTF-8: desventajas ¾ ¾ ¾ Es de longitud variable; eso significa que diferentes caracteres toman secuencias de diferentes longitudes para codificar. La agudeza de esto podría ser disminuida, sin embargo, creando una interfaz abstracta para trabajar con cadenas UTF-8 y haciéndolo transparente al usuario. Un analizador de UTF-8 mal escrito podría aceptar un número de diferentes representaciones pseudo-UTF-8 y convertirlas en la misma salida Unicode. Los caracteres ideográficos usan 3 bytes en UTF-8, pero sólo 2 en UTF-16. Así, los textos chinos/japoneses/coreanos usarán más espacio cuando sean representados en UTF-8. UTF-16 ¾ E un código de caracteres que proporciona una forma de representar caracteres Unicode e ISO/IEC 10646 como una serie de palabras de 16 bits y 24 bits susceptibles de ser almacenados o transmitidos a través de redes de datos. ¾ UTF-16 se halla oficialmente definido en el Anexo Q de la norma ISO/IEC 10646-1. También está descrita en el estándar unicode (versión 3.0 u superior), al igual que en la RFC 2781 de la IETF ¾ UTF-16 representa un carácter que ha sido asignado dentro del conjunto de los 65536 puntos del código unicode o ISO/IEC 10646 como un valor de código único equivalente al punto de código del carácter: por ejemplo, 0 para 0, FFFD hexadecimal para FFFD.