Representación de la información Parte 2

Anuncio
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.
Descargar