05. Representación de la información

INTRODUCCION

Los computadores digitales actuales se basan en una tecnología electrónica que permite representar los datos mediante combinaciones de circuitos flip-flop o biestables. Estos elementos básicos sólo admiten dos estados, representados por el nivel de tensión a su salida. La información que se representa mediante la combinación de elementos que sólo admiten dos estados se denomina información binaria. Cada uno de los elementos de la información binaria recibe el nombre de bit (binary digit) y se codifica mediante el empleo de uno de los dos únicos símbolos 0 o 1. Dicho de otro modo, cualquier dato que se deba procesar en un computador digital deberá estar representado por un código formado por una secuencia de ceros y unos. La codificación consiste en establecer unas reglas que definan una correspondencia entre cada elemento de información y la secuencia de bits que constituye su código. Existen varios criterios genéricos para establecer esta correspondencia, que dan lugar a tipos diferentes de códigos. Dichos criterios se denominan sistemas de codificación.

Clasificación de la información

Existen dos flujos de información en un computador digital:

Flujo de datos: han de ser manipulados para producir los resultados.

Flujo de control: o flujo de instrucciones, expresa las manipulaciones a realizar en dichos datos.

Los datos pueden ser:

Numéricos: números de tipo natural, entero o real.

Alfabéticos: letras del alfabeto.

El flujo de control se compone de las órdenes que debe ejecutar el computador, y que reciben el nombre de códigos de instrucción.

SISTEMAS DE CODIFICACION

Codificación directa

Es el sistema de codificación más simple de todos y consiste en establecer una correspondencia biunívoca entre un conjunto de símbolos y un conjunto de códigos binarios mediante una tabla. Si se tiene un conjunto de n elementos tales que cada uno de ellos puede tomar m valores distintos, el número Nc de combinaciones distintas de valores que puede tomar dicho conjunto de elementos (número de códigos posibles) viene dado por la expresión:

   Nc = m^n

Dado que m vale 2 para los elementos binarios, con n elementos se pueden obtener 2^n códigos distintos.

Codificación por campos

Cada campo se codifica por una tabla independiente. La suma de longitudes de estas tablas es inferior a la de una tabla directa única. La codificación por campos resulta habitualmente más sencilla que la codificación directa. Esta última presenta en contrapartida una total libertad en la asignación de códigos, lo que permite en muchos casos facilitar las operaciones de proceso de la información codificada.

Codificación por secuencias de códigos

A menudo los elementos de información no se procesan o almacenan aisladamente sino en conjunto. En estos casos los códigos de los sucesivos datos suelen tratarse o registrarse secuencialmente. El tratamiento secuencial de los códigos abre una nueva posibilidad consistente en hacer que determinados códigos especiales modifiquen la interpretación de los que aparezcan a continuación. Este sistema de codificación consigue reducir la longitud de las tablas de codificación a costa de aumentar la longitud del código asignado a ciertos símbolos.

CODIGOS NUMERICOS

Fundamentos

Se puede definir un sistema de numeración como el conjunto de símbolos y reglas que se utilizan para la representación de cantidades. Existe un elemento fundamental que caracteriza a todos los sistemas de numeración, y que se denomina base del sistema de numeración. Dicha base es el número de símbolos que se utilizan para realizar la representación. Se denomina rango de representación, en un sistema de numeración y con un número de cifras determinado n, al conjunto de cantidades representables en el mismo.

Sistemas posicionales

En los sistemas de numeración, la representación de una cantidad siempre se efectúa mediante cadenas de símbolos. Si el significado de los símbolos varía en función de la posición que ocupen en la cadena, entonces dicho sistema de numeración recibe el nombre de posicional. Los ejemplos más importantes de sistemas de numeración posicionales son el decimal o de base 10, utilizado por el hombre en la cultura occidental, y el binario o de base 2, que es el que utiliza el computador para representar la información y con el que es capaz de trabajar. Cabe mencionar que existen otros sistemas de numeración, como los sistemas de residuos, que no son posicionales pero que no se tratarán por tener menos importancia.

Teorema fundamental de la numeración

Supóngase una cantidad X expresada en un sistema cuya base es b, y que está representada por una cadena de dígitos { xi } donde el subíndice indica la posición de la cifra respecto a la coma en el sentido mencionado anteriormente, y donde se considera que el dígito inmediatamente a la izquierda de la coma ocupa la posición de referencia 0. Entonces dicha cantidad X (de la que se desea conocer normalmente su valor decimal) se obtiene a partir de su representación mediante la fórmula:

   X = Suma de i [ -infinito, infinito ] xi · bi

Asimismo, dada una cantidad X y un sistema de representación posicional de base b, existirá una única representación posible de dicha cantidad en dicha base, realizada a partir de dígitos que cumplan la condición 0 <= xi < b, para todo i.

SISTEMAS DE NUMERACION

Sistema decimal

Es el de base 10 y es el que entiende de modo natural el ser humano. Es, por tanto, el sistema que se utilizará como referencia para conocer las cantidades representadas en los otros sistemas de numeración. Se suponen n cifras enteras y sin signo.

Rango de representación:   0 <= X < 10^n

Sistema binario

Este es el sistema de numeración que utiliza el computador internamente. Este sistema de numeración es de base 2. Para convertir un número decimal a binario, se divide sucesivamente por 2, y se toman sucesivamente el último cociente y desde el último resto hasta el primero.

Rango de representación:   0 <= X < 2^n

Sistema octal

Este es el sistema de numeración en base 8 y utiliza 8 símbolos para representar las cantidades. Dichos símbolos son: 0, 1, 2, 3, 4, 5, 6 y 7 y tienen el mismo significado que sus equivalentes decimales. La conversión de octal a binario se realiza mediante la siguiente tabla:

OCTAL        0       1       2       3       4       5       6       7

=======================================

BINARIO   000   001   010   011   100   101   110   111

Rango de representación:   0 <= X < 8^n

Sistema hexadecimal

Este es el sistema de numeración en base 16 y utiliza 16 símbolos para representar las cantidades. Dichos símbolos son: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F. Los diez primeros son los números decimales y tienen el mismo significado que en la numeración decimal. Los seis últimos son letras que representan: A=10, B=11, C=12, D=13, E=14 y F=15. La conversión de hexadecimal a binario se realiza mediante la siguiente tabla:

HEXADECIMAL         0         1         2         3         4         5         6         7

======================================================

BINARIO                  0000   0001   0010   0011   0100   0101   0110   0111

======================================================

HEXADECIMAL         8         9         A        B        C         D        E         F

======================================================

BINARIO                  1000   1001   1010   1011   1100   1101   1110   1111

Rango de representación:   0 <= X < 16^n

Sistema binario-decimal

Los denominados códigos binario-decimales corresponden a una codificación por campos, en la que cada campo contiene el código de una cifra decimal. Como existen 10 posibles cifras decimales, del 0 al 9, cada campo deberá tener al menos 4 bits, por ser 24 = 16 > 10.

DECIMAL   BCD 8421   Aiken 2421   exceso de 3   Biquinario 5421

================================================

      0                0000            0000              0011                0000

      1                0001            0001              0100                0001

      2                0010            0010              0101                0010

      3                0011            0011              0110                0011

      4                0100            0100              0111                0100

      5                0101            1011              1000                1000

      6                0110            1100              1001                1001

      7                0111            1101              1010                1010

      8                1000            1110              1011                1011

      9                1001            1111              1100                1100

ARITMETICA BINARIA

Suma

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 0 *

* = con 1 de acarreo

Resta

0 - 0 = 0

0 - 1 = 1 *

1 - 0 = 1

1 - 1 = 0

* = con un préstamo de 1

Multiplicación

0 x 0 = 0

0 x 1 = 0

1 x 0 = 0

1 x 1 = 1

División

0 / 0 = Error *

0 / 1 = 0

1 / 0 = Error *

1 / 1 = 1

* la división por 0 no tiene sentido

REPRESENTACION DE NUMEROS NEGATIVOS

Módulo y signo

El cambio de signo es inmediato: sólo cambiar el bit de la izquierda.

La multiplicación y la división se tratan sin dificultad oper ndose por un lado con las magnitudes y por otro con los signos.

La posibilidad de desbordamiento al operar con sumas, restas y multiplicaciones suponen una dificultad.

El rango de representación es simétrico [ -2^n-1 + 1, 2^n-1 - 1 ] pero la ambigüedad de representación del 0 complica la detección de números negativos.

La extensión de signo es relativamente complicada.

Las operaciones de suma y resta se complican al depender de los signos y magnitudes de los operandos.

Complemento a 1

El cambio de signo se reduce al complemento lógico (cambiar ceros por unos y viceversa).

La suma es sencilla pero teniendo en cuenta que cuando aparece un acarreo a la posición n se debe incrementar en una unidad el resultado.

Se complican la multiplicación y la división, puesto que hay que considerar la posibilidad de que haya operandos complementados.

Existe la posibilidad de desbordamiento, que deberá detectarse al operar.

El rango de representación es simétrico [ -2^n-1 + 1, 2^n-1 - 1 ] y el cero admite dos representaciones: 00...00 o 11...11.

La extensión de signo se limita a repetir el bit de la izquierda.

Complemento a 2

El cambio de signo es sencillo aunque ligeramente más complicado que en el complemento a 1: realizar el complemento lógico y añadir 1.

La suma y resta son más sencillas que con el complemento a 1: consiste en realizar la suma directa.

Existe la posibilidad de desbordamiento en estas operaciones, que no debe confundirse con el acarreo superior que se elimina.

Se complican la multiplicación y la división, puesto que hay que considerar la posibilidad de que haya operandos complementados.

El rango de representación es asimétrico [ -2^n-1, 2^n-1 - 1 ]. Esto presenta el problema de que no se puede hacer el complemento de -2^n-1 ya que daría el mismo código, lo que se supone que es un desbordamiento. Sin embargo el cero tiene una única representación.

La extensión de signo se limita a repetir el bit de la izquierda.

Exceso a M

En este sistema los números se incrementan en M y el resultado se representa luego en binario puro. El número X viene representado por X + M expresado en binario. En la mayoría de los casos se hace M = 2^n-1, donde n es el número de bits empleados para la representación. Este sistema de representación se utiliza para expresar los exponentes en el caso de coma flotante.

Representación en coma flotante

El exponente se representa en el sistema de exceso a 2^n-1, siendo n el número de bits que se dedican al mismo.

La mantisa es un número real normalizado: sin parte entera y tal que la primera cifra fraccionaria es significativa.

La base de exponenciación o raíz es una potencia de 2 determinada por el fabricante: 2, 8 o 16.

Coma flotante estándar IEEE 754

Emplea mantisa fraccionaria normalizada.

La mantisa se representa en el sistema de módulo y signo.

Utiliza el formato de precisión ampliada, valiendo siempre 1 el bit implícito.

La coma está a la derecha del bit implícito, constituyendo dicho bit la parte entera de la mantisa.

El exponente se representa en exceso, pero a 2^n-1 - 1 en vez de a 2^n-1, como sucedía en los casos anteriores.

Juego de caracteres alfanuméricos

Las letras del alfabeto: mayúsculas y minúsculas.

Las 10 cifras del sistema decimal: del 0 al 9.

Los signos de puntuación: . , : ; ? + * % ...

Los caracteres de control: órdenes entre dispositivos.

Longitud del código binario: número de bits utilizados para codificar un carácter. Suele estar entre 6 y 12 bits.

El sistema de codificación suele ser directo.

Número máximo de caracteres distintos que se pueden representar con la longitud de código anteriormente definida: 2^longitud .