Tema 10 – Representación interna de los datos.

Tema 10 – Representación interna de los datos.

1.- DATOS………………………………………………………………………………………………………….. 3

1.1.- CONCEPTOS…………………………………………………………………………………………… 3

1.2.- COMPOSICIÓN Y ESTRUCTURA…………………………………………………………… 3

1.3.- MEDIDAS DE INFORMACIÓN ………………………………………………………………. 3

2.- REPRESENTACIÓN INTERNA DE LOS DATOS……………………………………………. 4

2.1.- DATOS A REPRESENTAR………………………………………………………………………. 4

2.2.- SISTEMAS DE NUMERACIÓN……………………………………………………………….. 5

2.3.- TIPOS DE DATOS QUE SE PUEDEN REPRESENTAR……………………………… 5

2.3.1.- REPRESENTACIÓN DE LAS INSTRUCCIONES………………………………… 6

2.3.2.- REPRESENTACIÓN DE LOS DATOS………………………………………………… 6

2.3.3.- REPRESENTACIÓN DE IMÁGENES……………………………………………….. 12

2.3.4.- REPRESENTACIÓN DE SONIDOS …………………………………………………. 12

3.- COMPRESIÓN DE DATOS…………………………………………………………………………… 12

1.- DATOS.

1.1.- CONCEPTOS.

La palabra datos proviene del latín datum (plural data) que significa “lo que se da”, en el sentido de “lo que acontece”. El diccionario de la Real Academia de la Lengua Española dice que los datos son: “antecedentes necesarios para llegar al conocimiento exacto de una cosa o para deducir las consecuencias legítimas de un hecho”. Dato en informática, es un conjunto de símbolos necesarios para expresar un número, valor, palabra o concepto.

La información es cualquier entrada que cambia las probabilidades o destrezas.

La información es un conjunto de datos que permiten aclarar algo que es desconocido. Es susceptible de aportar un conocimiento.

El ordenador es una máquina destinada a procesar información.

1.2.- COMPOSICIÓN Y ESTRUCTURA.

Los datos suelen ser magnitudes numéricas directamente medidas o captadas, pero también pueden ser nombres o conjuntos de símbolos o valores cualitativos.

Los datos se representan mediante una secuencia de símbolos, por ejemplo en nuestra vida diaria representamos las palabras mediante letras tomadas de nuestro alfabeto.

Un alfabeto no es más que un conjunto de símbolos elementales en base a los cuales se forma la información.

La informática ha logrado el tratamiento automático de la información con máquinas. No es necesario que el alfabeto que usa una máquina en su interior sea el mismo que el que utiliza el ser humano que la ha constituido y la maneja, basta con que la traducción de los símbolos internos a los externos o viceversa se efectúe de una manera cómoda y a ser posible automáticamente por la propia máquina.

La codificación: Es la operación que permite pasar del alfabeto fuente al alfabeto código.

1.3.- MEDIDAS DE INFORMACIÓN.

Dentro del ordenador, la información se representa mediante el sistema de numeración binario, es decir, mediante 0’s y 1’s. (Debido a que inicialmente existían 2 estados eléctricos básicos. Tensión y ausencia de tensión).

La unidad básica de información es el bit o BInary digiT. Viene de la expresión inglesa de dígito binario.

Como el bit es una unidad de medida tan pequeña, se usan medidas de unidades superiores. El byte es el conjunto de 8 bits. En la memoria del ordenador, un byte suele ser la unidad de direccionamiento, es decir, se puede referir a cada byte mediante un número que es su dirección. El byte puede almacenar 8 dígitos binarios. Las características de información hoy en día son grandes por lo que se utilizan múltiplos. 1Kbyte son 1024 bytes (210). 1 (Megabyte) Mbyte son 220 bytes, 1 (Giga) Gbyte son 230 bytes y un (Tera) Tbyte son 240 bytes.

2.- REPRESENTACIÓN INTERNA DE LOS DATOS.

2.1.- DATOS A REPRESENTAR.

Toda la información que maneja el ordenador se representa mediante dos símbolos básicos, el ordenador es capaz de construir, almacenar y representar distintos tipos de información, mediante la codificación de la información, entre los que se distinguen 5 tipos de representaciones claramente:

Representación de textos. Usualmente la información se da al ordenador en la forma usual escrita que utilizan los seres humanos; es decir, con ayuda de un alfabeto o conjunto de símbolos, que denominaremos caracteres.

Representación de valores numéricos. Los datos numéricos se suelen introducir como cualquier otro conjunto de caracteres.

Representación de instrucciones. Las instrucciones de un programa en lenguaje de alto nivel o en lenguaje ensamblador se dan en forma de texto y el traductor correspondiente, ya sea un compilador o intérprete, se encarga de transformarlas en instrucciones máquina. Son las que entiende el ordenador.

Representación de sonidos. Los ordenadores actuales, además de procesar textos y datos numéricos, también operan con otro tipo de elementos, como sonidos, digitalizados y representados en binario en el interior del ordenador, mediante distintas codificaciones del sonido.

Representación de imágenes. Al igual que los sonidos, las imágenes tanto estáticas como dinámicas poseen su representación y codificación binaria digital en el interior de tos ordenadores. Siendo la codificación de las imágenes una de las técnicas que más están evolucionando en los últimos tiempos debido al auge de los sistemas multimedia.

La codificación va a facilitar y optimizar las tareas de almacenamiento, representación, procesamiento y comunicación de la información. Algunos de los condicionantes que encontraremos a la hora de codificar la información son los siguientes:

– La memoria del ordenador es finita, por lo que las representaciones han de ser forzosamente acotadas.

– Las unidades funcionales del computador suelen estar diseñadas para trabajar con una cadena de bits de cierto tamaño.

– Los elementos de comunicación entre unidades funcionales (buses) tienen cierto ancho de, esto es, permiten transmitir simultáneamente un cierto número de bits.

2.2.- SISTEMAS DE NUMERACIÓN.

Un sistema de numeración es el conjunto de reglas, convenios y símbolos que permiten expresar números.

Existen sistemas de numeración posicionales y no posicionales.

En los primeros se contempla el valor relativo de la cifra dentro del número, en los segundos no.

En los sistemas de numeración posicional el valor de un dígito depende tanto de su propio valor como de la posición que ocupa. Un ejemplo es el sistema de numeración decimal. En los sistemas de numeración no posicional el valor de un dígito sólo depende de su valor. Por ejemplo el sistema romano, que utiliza los siguientes siete símbolos para la representación {I, V, X, L, C, D, M} y que independientemente de donde estén colocadas las cifras tienen el mismo valor. Los sistemas más comunes son:

Decimal. b=10. D {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Sistema de representación numérico del ser humano.

Binario. b=2. D {0, 1}. Sistema de representación interna del ordenador.

Octal. b=8. D {O,..7}. Las conversiones octal-binario y binario-octal pueden hacerse fácilmente. Agrupando dígitos de 3 en 3.

clip_image002
Hexadecimal b=16. D {O, .., 9, A, B, C, D, E, F}. Las conversiones hexadecimal-binario y binario-hexadecimal se realizan agrupando dígitos de 4 en 4.

Los datos numéricos se introducen en un ordenador usando el lenguaje escrito, como secuencias de caracteres, y por tanto se codifican, como cualquier tipo de texto, de acuerdo con un código de entrada y salida, tal como el ASCII. Si se va a realizar algún cálculo matemático, la representación de los datos numéricos como textos es inapropiada. En efecto, como este tipo de codificación no se basa en los sistemas de numeración matemáticos, no podemos aplicar las tablas y reglas de la aritmética para operar con dichos números. Cuando queramos realizar algún cálculo matemático, obviamente lo mejor es representar los datos numéricos en alguna forma basada en el sistema de numeración matemático.

2.3.- TIPOS DE DATOS QUE SE PUEDEN REPRESENTAR.

Un ordenador es una máquina que partiendo de unos datos de entrada, los procesa y produce una información de salida. Concretando, la ejecución de un programa implica la realización del tratamiento (según especifica un conjunto de instrucciones) sobre unos datos.

Los datos a representar internamente en el ordenador, se pueden clasificar:

2.3.1.- REPRESENTACIÓN DE LAS INSTRUCCIONES.

Una instrucción es un conjunto de símbolos que la computadora es capaz de interpretar con objeto de realizar las operaciones de las que consta un programa. Las instrucciones utilizadas por los ordenadores pueden tener diferentes formatos.

Todas las instrucciones tienen una parte que las diferencia, el código de operación que indica la operación a ejecutar. Según el tipo de operación, pueden contener uno o varios operandos.

Campos de una instrucción:

Código de operación: este campo es necesario que esté presente en todas las instrucciones, este campo, es el campo que diferencia una instrucción de otra. Indica la operación a realizar. No hay dos operaciones diferentes con el mismo código de operación.

El código de operación suele ocupar los bits más significativos de una instrucción (la parte de la izq.). Si una instrucción ocupa más de una palabra, el código de operación estará en la primera palabra que lea la CPU.

Campo operandos: este campo no está presente en todas las instrucciones ya que algunas instrucciones no emplean datos y otras en que la localización de los mismos está implícita en el propio código de operación.

La longitud de este campo es normalmente variable, dependiendo del número de operandos que utilice la instrucción y de forma que se indique a la CPU el acceso a los mismos.

2.3.2.- REPRESENTACIÓN DE LOS DATOS.

2.3.2.1.- REPRESENTACIÓN ALFANUMÉRICA.

La representación de la información de tipo texto escrito se hace codificando, en un octeto, cada uno de los caracteres que componen dicha información.

Código Baudot: Data de finales del S. XIX. Lo desarrolló Jean-Maurice-Émile Baudot. Utilizaba 5 bits por carácter y se usaba en telegrafía.

Alfabeto Internacional Nº 2: 1901. Donald Murray añadió nuevos caracteres y códigos de desplazamiento al anterior. Cada carácter 5 bits. Existen algunos caracteres de control. Inicialmente se utilizó en los teletipos. (Teleimpresores o TTY).

Codificación FIELDATA: Proyecto de Estados Unidos a finales de los 50. Pretendía crear un estándar para recoger y distribución en el campo de batalla. Utiliza bloques de 6 dígitos para representar los caracteres. Sólo se pueden representar 26 datos, es decir 64 caracteres.

Codificación EBCDIC (Extended Binary Coded Decimal Interchange Code): Usado en mainframes de IBM inicialmente. Utiliza 8 bits para cada carácter por lo que se pueden representar 256 caracteres. Cada octeto se divide en 2 partes (bits de zona, bits de dígito).

Código ASCII (American Standard Code for Information Interchange). El más difundido hoy en día para su uso en los ordenadores. Se publicó en 1963 por ASA (que posteriormente pasó a ser ANSI) Dispone de 8 bits aunque sólo utiliza los 7 primeros para el uso de letras, números y caracteres especiales. Con 7 bits se pueden representar 128 caracteres diferentes. Se pueden representar todos los números, letras mayúsculas, minúsculas, caracteres especiales y de control.

El resto de las combinaciones de la 128 a la 255 se usan para representar caracteres de tipo gráfico.

Los 32 primeros caracteres son de control.

UNICODE. Es un estándar internacional establecido por el Consorcio Unicote (formado por empresas como Apple Computer, Microsoft, IBM, HP, …). Su objetivo es representar cualquier carácter jamás escrito. Windows NT y sus sucesores lo usan. También sistemas operativos como Linux, Mac OS X y lenguajes de programación como Java, Perl y C#.

2.3.2.2.- REPRESENTACIÓN NUMÉRICA.

Como se sabe, los números se pueden clasificar en:

– Naturales.

– Enteros.

– Racionales.

– Irracionales.

Cualquiera de estos conjuntos de números es infinito, mientras que el espacio material de representación de los computadores es finito, por lo tanto, no es posible representar todos los valores.

En informática, se asigna un número fijo de n bits para representar un número. Teniendo en cuenta que n bits permiten 2n números distintos existirán dos valores. Se llama rango de representación al intervalo comprendido entre el mayor y el menor número representable.

La resolución de representación se refiere a la diferencia que existe entre un número representable y el inmediato siguiente:

Los factores a tener en cuenta para representar números son:

El tipo de los números a representar: enteros, reales … El rango de números representables.

La posición de dato numérico: nº de números para un rango dado.

El coste hardware requerido para almacenar y procesar los números a

Los sistemas de representación más empleados son los siguientes:

ENTEROS.

Posicionales: un número se representa como una secuencia de dígitos, donde cada uno tiene un peso de acuerdo con la posición que ocupa.

Con este tipo de representación, el problema es que leer y escribir largas cadenas de 1’s o 0’s es engorroso y una tarea que predispone a cometer errores. Como solución, se suele utilizar la base octal (b=8) y la base hexadecimal (b=16).

Dentro de los números enteros tendremos que distinguir entre los números positivos y los números negativos:

o Si sólo representamos números enteros positivo, con n bits representaremos desde el 0 a 2n -1.

o Para codificar los números enteros negativos, hemos de tener en cuenta algunas consideraciones:

A) El intervalo de números positivos debería de ser igual al intervalo de números negativos para un n dado.

B) Sea fácil detectar el signo por un simple test hardware.

C) Sea fácil detectar el 0.

D) El código resultante de la codificación ha de dar lugar a una implementación sencilla a la hora de realizar las operaciones aritméticas básicas.

Para dar respuesta a estas consideraciones, aparecen tres sistemas de numeración posicionales que permiten la represtación de números negativos.

o Signo y magnitud: consiste en reservar un bit para el signo. Con n bits disponibles, uno indica el signo y los n-1 restantes indican la magnitud. Normalmente, el bit de la izquierda se reserva para el signo. El bit de signo a 0 indica que el nº es positivo, mientras que si es 1, indica que el número es negativo.

Ventajas: cumple A) y B).

Inconvenientes: Representación dual del 0 y no verifica D), por que la suma no es tan evidente.

Esta representación ampliamente utilizada en los computadores de la tercera generación, en la actualidad no se utiliza.

o Complemento a 1: se representa un número de n bits en complemento a uno de la siguiente forma:

Para un nº positivo, se representa el número en binario. (Sin reservar ningún bit para el signo como en el caso anterior).

Para un nº negativo, se representa igual que un número positivo pero se complementa cada uno de los bits. (se cambian 0’s por 1’s y 1’s por 0’s).

Ventajas: cumple A) puesto que el número de positivos es igual que el número de negativos. Cumple B) y D).

Inconvenientes: no cumple C) representación dual del 0.

o Complemento a 2: se representa un número de n bits en complemento a dos de la siguiente forma:

Para un nº positivo, se representa igual que un número positivo en complemento a uno.

Para un nº negativo, se representa igual que un número negativo en complemento a uno pero se le suma 1 al resultado obtenido.

Ventajas:

Cumple A) puesto que el número de positivos es igual al de los negativos.

Cumple B) porque es fácil detectar el signo.

Cumple C) porque no tiene representación dual del 0 y Cumple D).

Inconvenientes: es más costoso de implementar ya que hay que realizar una suma adicional.

Se puede decir que es la representación más utilizada a la hora de representar números enteros negativos.

Decimal

BINARIO

BCD natural

BCD exceso

3

BCD Aiken

GRAY

JOHNSON

5 bits

0

0000

0000

0011

0000

0000

00000

1

0001

0001

0100

0001

0001

00001

2

0010

0010

0101

0010

0011

00011

3

0011

0011

0110

0011

0010

00111

4

0100

0100

0111

0100

0110

01111

5

0101

0101

1000

1011

0111

11111

6

0110

0110

1001

1100

0101

11110

7

0111

0111

1010

1101

0100

11100

8

1000

1000

1011

1110

1100

11000

9

1001

1001

1100

1111

1101

10000

10

1010

NO

NO

NO

1111

NO

11

1011

NO

NO

NO

1110

NO

12

1100

NO

NO

NO

1010

NO

13

1101

NO

NO

NO

1011

NO

14

1110

NO

NO

NO

1001

NO

15

1111

NO

NO

NO

1000

NO

REALES.

Punto Fijo: consiste en colocar un punto en algún lugar de la cadena de unos y ceros que va a representar nuestro número real.

Una vez colocado el punto en una determinada posición, ya no se puede modificar ya que esa decisión se toma durante el diseño de la máquina. A la derecha del punto las potencias de la base son negativas.

Punto flotante: consiste en representar el número mediante una mantisa, una base y un exponente.

o Para el exponente se reservan q bits.

o Para la mantisa p bits.

IEEE 754: es un formato estándar para los números flotantes de 32 y 64 bits:

32 bits (simple precisión).

El primer bit es el bit de signo (S), 0 para los positivos, 1 negativos.

Los 8 siguientes son los bits del exponente (E) en exceso 127.

E = C – 127. C = E+127

El resto (23) son la mantisa (M) se expresa normalizada(0,xxxxx)

S EEEEEEEE MMMMMMMMMMMMMMMMMMMMMMM

64 bits (doble precisión).

Cambia sólo los bits reservados para cada campo. El primer bit es el bit de signo (S), 11 son los bits del exponente (E) y 52 son la mantisa (M):

S EEEEEEEEEEE MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM 0 1 11 12 63

2.3.3.- REPRESENTACIÓN DE IMÁGENES.

Las imágenes analógicas presentan una variación continua de sombra y tonos. Para poder representarlas es necesario realizar una conversión analógico / digital. Se hace a través de un muestreo y una cuantificación.

– El Muestreo divide la imagen analógica en subdivisiones cuadradas cuyo valor depende de la escala (color) y de la intensidad de la luz.

Si el valor es un vector de tres componentes (R,G,B) se obtiene una escala de color.

– La Cuantificación es la discretización de cada una de las muestras. A cada valor obtenido se le llama píxel.

2.3.4.- REPRESENTACIÓN DE SONIDOS.

El sonido es una onda analógica que presenta variaciones de amplitud a intervalos regulares de tiempo.

La amplitud determina su volumen, mientras que la frecuencia determina la escala. Al igual que con las imágenes es necesario realizar una digitalización (conversión A/D).

El número de bits de la cuantificación influye en la calidad del sonido. El muestreo debe ser realizado a 22 KHz.

3.- COMPRESIÓN DE DATOS.

En muchas aplicaciones se requiere la utilización de archivos de gran capacidad. Así ocurre con los archivos de imágenes y sonido en aplicaciones multimedia. En estos casos el tiempo de transmisión de una imagen por una red, o el volumen requerido para su almacenamiento en disco pueden llegar a ser muy elevados.

Este problema se presenta de forma notable en las aplicaciones multimedia, donde es frecuente utilizar combinadamente textos, sonidos, e imágenes tanto estáticas como dinámicas (vídeo).

Existe un conjunto de técnicas para reducir el tamaño de la información que ocupan estos archivos multimedia, denominadas compresión de datos. El archivo antes de ser almacenado o transmitido se comprime mediante un algoritmo de compresión, y cuando se recupera para procesarlo o visualizarlo se aplica la técnica inversa para descomprimirlo.

Entre los algoritmos se distinguen aquellos que realizan:

Compresión sin pérdidas, esto ocurre cuando la información original se comprime sin perder nada de la información inicial de forma tal que se puede recuperar exactamente la información de partida, sin pérdida de calidad.

Compresión con pérdidas, para conseguir una mayor compresión, se toleran pérdidas de calidad, no pudiéndose en la descompresión recuperar exactamente la información original.

A continuación se describen los fundamentos de algunas técnicas de compresión:

Codificación por longitud de secuencias (o RLE, Run Length Encoged). Recuérdese que la información está representada internamente por ceros y unos. Una forma sencilla de comprimir los datos, en el caso de que en el archivo se repitan largas secuencias de ceros y unos, es sustituir cada una de éstas por el símbolo de la secuencia seguido por el número de veces que se repiten en ella. Este tipo de compresión resulta útil en archivos en los que se repiten largas secuencias, por ejemplo, el fondo de en una imagen de un espacio interior (la pared de una habitación es muy continuo y queda, por tanto, representada por grandes secuencias de símbolos iguales.

Codificación relativa o incremental. Con frecuencia en imágenes y señales de sonido, los valores de dos píxeles consecutivos o de dos muestras de voz consecutivas en el tiempo difieren en una cantidad pequeña, en comparación con sus valores absolutos. Por ejemplo las, variaciones de color y de textura dentro de los objetos de una imagen suelen ser muy pequeñas, teniéndose sólo grandes variaciones en los contornos de dichos objetos. En este caso se logra una reducción considerable de almacenamiento si en lugar de almacenar los valores absolutos, se almacenan los incrementos respecto al valor anterior. Esta técnica de compresión también se utiliza para imágenes en movimiento, cuando la variación entre imágenes sucesivas es muy pequeña Este es el caso, por ejemplo, de imágenes de videoconferencias una vez que se transmite completamente la imagen primera, sucesivamente solo se transmiten las diferencias con respecto a la imagen anterior.

Codificación dependiente de la frecuencia. Consiste en representar cada símbolo con un código binario cuya longitud sea inversamente proporcional a la frecuencia con la que aparecen; de esta manera los símbolos que se repiten más en un archivo se representarán con menos bits que los símbolos que aparecen con menos frecuencia.

Codificación con diccionario adaptativo. La idea básica consiste en realizar un diccionario con secuencias de bits, y sustituir en el archivo a comprimir dichas secuencias por su índice (número de orden) dentro del diccionario. El diccionario es adaptativo en el sentido de que según se va procesando la información, para comprimirla se va creando el diccionario: dada una secuencia determinada, primero se consulta si ya está en el diccionario; si

es así, se sustituye por el índice correspondiente, si no la nueva secuencia se incluye en el diccionario y se sustituye en el archivo por el nuevo índice. La compresión se obtiene debido a que siempre ocuparan menos los índices que las secuencias que representan.

Codificación Lempel-Ziv LZ77. Es un caso particular de diccionario adaptativo donde se busca si los siguientes caracteres a comprimir han aparecido previamente en una secuencia anterior, caso de ser así esa cadena de caracteres se codifican con 3 números (m, n, s), donde m representa el lugar hacia atrás donde se inicia la secuencia previa encontrada, n es la longitud de la secuencia y s es el siguiente carácter de la cadena comprimida. Se observa que en este caso realmente no se crea un diccionario de cadenas. Según aumenta el tamaño del archivo mayor probabilidad existe de encontrar secuencias previas mas largas. En definitiva, la técnica consiste en encontrar la mayor secuencia previa que concuerde con los siguientes símbolos a comprimir del resto del archivo. Los conocidos programas zip y unzip para comprensión y decomprensión de datos utilizan procedimientos de este tipo.