Representación de la información

Representación de la información Este documento explica las diferentes formas que hay de codificar la información para que un ordenador pueda almacena

0 downloads 49 Views 495KB Size

Recommend Stories


LA lmagen DE LA MUJER EN LA POESiA DE JOSEMARTI
LA lMAGEN DE LA MUJER EN LA POESiA DE JOSEMARTI Helena Usandizaga Universitat Autonoma de Barcelona Dos patrias tengo yo: Cuba y la noche. (,0 son un

DOCTRINA DE LA BIBLIA LA DOCTRINA DE LA IGLESIA
DOCTRINA DE LA BIBLIA SEGUNDA EDICIÓN LA DOCTRINA DE LA IGLESIA La doctrina de la iglesia, igual que todas las demás doctrinas de la Biblia, se manif

La Visión de la Epilepsia a Través de la Historia
Bol Clin Hosp Infant Edo Son 2015; 32(2); 87-101 La Visión de la Epilepsia a Través de la Historia. Ana Silvia Figueroa-Duarte* Oscar A. Campbell-Ar

Story Transcript

Representación de la información Este documento explica las diferentes formas que hay de codificar la información para que un ordenador pueda almacenarla, interpretarla y manipularla. Se verán los diferentes tipos de datos y sus posibles representaciones en forma binaria.

Representación de la información by Rafael Lozano is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España License.

Tabla de contenidos

Tabla de contenido 1 Introducción........................................................................................................................................ 1 2 Los sistema de numeración.............................................................................................................2 2.1 Teorema fundamental de la numeración..............................................................................................2 2.2 Sistema de numeración binario...............................................................................................................3 2.3 Sistema de numeración octal...................................................................................................................5 2.4 Sistema de numeración hexadecimal....................................................................................................5 2.5 Conversión entre sistemas........................................................................................................................6 2.6 Notación en las diferentes bases............................................................................................................7

3 Codificación de la información........................................................................................................8 3.1 Datos y tipos de datos................................................................................................................................8 3.2 Entero sin signo............................................................................................................................................9 3.3 Entero con signo..........................................................................................................................................9 3.3.1 Signo magnitud........................................................................................................................................... 9 3.3.2 Complemento a 1.................................................................................................................................... 10 3.3.3 Complemento a 2.................................................................................................................................... 10 3.3.4 Exceso......................................................................................................................................................... 10 3.3.5 BCD.............................................................................................................................................................. 11 3.4 Numérico real.............................................................................................................................................12 3.4.1 Coma fija.................................................................................................................................................... 13 3.4.2 Coma flotante........................................................................................................................................... 14 3.5 Alfanumérica...............................................................................................................................................16 3.5.1 EBCDIC........................................................................................................................................................ 17 3.5.2 ASCII............................................................................................................................................................ 17

3.5.2.1 Caracteres de control........................................................................................................................... 18 3.5.2.2 Caracteres imprimibles........................................................................................................................ 19 3.5.2.3 Página de códigos 437......................................................................................................................... 19

3.5.3 ISO-8859-1................................................................................................................................................. 20 3.5.4 Unicode...................................................................................................................................................... 21 3.5.4.1 Repertorio de caracteres..................................................................................................................... 22 3.5.4.2 Formas de codificación........................................................................................................................ 22 3.5.4.3 UTF-8........................................................................................................................................................ 23

4 Medidas de la información............................................................................................................24 5 Bibliografía......................................................................................................................................... 27

Índice I

Rafael Lozano

Representación de la información

Representación de la información

1 Introducción Un sistema informático realiza el tratamiento a la información, la cual se introduce, se almacena y se devuelve el resultado de su tratamiento. La ejecución de una tarea implica la realización de unos tratamientos, según especifica un conjunto ordenado de instrucciones (es decir, un programa) sobre unos datos. Para que un sistema informático ejecute un programa es necesario suministrarle información que puede ser de dos tipos: ✔

Instrucciones que forman el programa.



Los datos con los que debe operar ese programa.

Uno de los aspectos más importantes relacionado con la información, es cómo representarla. Normalmente se le da al ordenador en la forma usual escrita que utilizan los humanos, es decir, con ayuda de un alfabeto o conjunto de símbolos, los caracteres. Sin embargo, un sistema informático no interpreta la información como lo hace un ser humano, ya que solamente manipula señales eléctricas, y por ello necesita utilizar una representación diferente. Por tanto se necesita alguna forma de simplificar la representación de la información para que pueda ser introducida y tratada por el ordenador en forma de señales eléctricas. La información que maneja el ordenador y la que utiliza los seres humanos siempre es igual, lo que cambia es su forma de representarla para que ambos la puedan entender. Como consecuencia de lo anterior, hay dos niveles en la representación de la información: ✔

Nivel de representación externa: usada por las personas e inadecuada para el ordenador



Nivel de representación interna: adecuada al ordenador y no inteligible directamente por el ser humano.

Página 1

Rafael Lozano

Representación de la información

Al inicio del desarrollo de los ordenadores uno de los mayores problemas que existía por aquél entonces era como representar la información para que el ordenador pudiera entenderla y gestionarla. Estos primeros ordenadores se limitaban a realizar cálculos aritméticos, por lo que la información que manipulaban era de tipo numérico. Debido a ello, los científicos que desarrollaron los primeros ordenadores se vieron forzados a reducir la información a su forma más básica: verdadero o falso, activada o desactivada. Como estos primeros ordenadores se construyeron con dispositivos eléctricos que podían tener carga eléctrica o no, se decidió asignar cada uno de estos dos posibles estados de la información a cada estado que podía tomar el dispositivo eléctrico. Si este estaba con carga eléctrica, el valor era verdadero, si por el contrario el dispositivo eléctrico no tenía carga eléctrica se le asignaba el valor falso. Para el desarrollo de estos primeros ordenadores se tomó como punto de partida el trabajo del matemático británico George Boole que durante el siglo XIX desarrolló un sistema de numeración que solamente empleaba dos dígitos: el 0 y el 1.

2 Los sistema de numeración El concepto de número es completamente independiente de la manera en que nosotros, los humanos, decidamos representarlo. En una agrupación de objetos, el número de éstos no depende de si lo expresamos en docenas o en unidades. Pero nosotros debemos elegir una manera de representarlo, representación que puede ser escrita o de otra naturaleza. Un sistema de numeración es un conjunto de símbolos y un conjunto de reglas establecidas para crear combinaciones de símbolos que permiten representar cantidades numéricas. Se caracteriza por la base, o número de símbolos que se emplean para representar las cantidades numéricas. Todos nosotros conocemos, desde muy niños, el sistema de numeración decimal. Nos resulta cómodo utilizarlo para representar un número: fácilmente podemos contar los elementos de un grupo y anotarlo en un papel. Este mismo sistema lo usamos en nuestra mente, para recordar un número. La idea es sencilla: tenemos diez símbolos (del cero al nueve) para representar cantidades menores de diez. Si la cantidad es mayor, contamos cuántos grupos de diez completos tenemos, y después las unidades que restan. Para expresar las decenas usamos los mismos diez dígitos, por lo que si el número llega a las diez decenas, contamos las centenas. Y así sucesivamente. Una de las propiedades del sistema de numeración decimal es su peso. Esta propiedad indica que un símbolo tiene un significado diferente en función del lugar que ocupe en la cantidad. Por ejemplo, el número 3539 hay dos símbolos que se repiten, el 3. El hecho de que sea el mismo símbolo no significa que representen lo mismo, ya que el primer tres por la izquierda significa tres mil unidades, mientras que el segundo significa 30 unidades. El peso del 3 en esta cantidad es diferente según el lugar que ocupa. Cuando un sistema de numeración cumple esta propiedad se dice que es ponderado o posicional.

2.1 Teorema fundamental de la numeración Los sistemas de numeración posicionales, como el decimal, se basan en este teorema. Establece que cualquier número representado por un sistema de numeración posicional puede expresarse como suma de los productos de cada símbolo por la base elevada a la posición que ocupa ese símbolo. Página 2

Rafael Lozano

Representación de la información

Formalmente, X es un número representado en un sistema de numeración con base B. Este número tiene n dígitos que cada uno ocupa la posición i: x0, x1, x2 … xn tenemos: i=n

X =∑ xi⋅Bi i=1

Las posiciones de los símbolos o dígitos comienzan a contar desde 0 y por la derecha. Si etiquetamos los dígitos de un número en sistema decimal comenzando por la derecha con x 0, x1, x2, y así sucesivamente, podemos comprobar que la cantidad representada se puede calcular como: x0 · 100 + x1 · 101 + x2 · 102 + x3 · 103 +... = x0 · 1 + x1 · 10 + x2 · 100 + x3 · 1000 + ... Por ejemplo, el número 3539 en el sistema decimal se puede expresar de la siguiente forma: 3539 =3 · 103 + 5 · 102 + 3 · 101 + 9 · 100 = 3 · 1000 + 5 · 100 + 3 · 10 + 9 · 1 = 3539 Un aspecto a destacar es el rango de números que se puede representar con un número fijo de dígitos. Intuitivamente, sabemos que con un número de 5 dígitos el mayor número que se puede representar es el 99999. ¿Qué es lo que hemos hecho? Simplemente poner en cada posición el guarismo de mayor valor. ¿Y cuántos números diferentes se pueden representar con cinco dígitos decimales? Pues los 99999 números entre el 1 y el 99999, y además el 00000. Es decir, con cinco dígitos podemos representar 10000 números diferentes, desde el 00000 hasta el 99999. Es decir, 10 5 números diferentes. Como regla general, en un sistema de numeración de base x, con n dígitos se pueden representar xn números diferentes, incluyendo entre estos el 0. Y el mayor número que se puede representar es el xn - 1. Esto nos será muy útil al utilizar el sistema binario. Una de las ventajas del sistema decimal que usamos a menudo es lo fácil que resulta multiplicar o dividir por 10 y sus potencias. Multiplicar se reduce a añadir ceros a la derecha, en el mismo número que el exponente de la potencia de 10 por la que multiplicar. Dividir, hablando de números enteros, se reduce a eliminar dígitos por la derecha. En otros sistemas de numeración, tenemos la misma propiedad. Por ejemplo, en base 13, dividir por 13 sería tan sencillo como desplazar los dígitos a la derecha, desechando los de la derecha, y multiplicar se reduciría a añadir ceros, es decir, desplazar los dígitos a la izquierda. Todos estos aspectos pueden parecer evidentes, ya que conocemos el sistema decimal desde hace tiempo, y nos hemos acostumbrado a él. Pero a la hora de conocer otros sistemas de numeración, resultan ser muy importantes.

2.2 Sistema de numeración binario Sabiendo cómo funciona el sistema decimal, resulta sencillo idear otros sistemas y utilizarlos. De hecho, es lo que se hizo cuando se comenzaron a diseñar los primeros ordenadores digitales. Uno de los elementos que se encuentran en un ordenador es un dispositivo electrónico biestable. Se trata de un circuito que tiene dos estados posibles, entre los que se puede alternar por medio de impulsos eléctricos externos a éste. Alguien pensó que se podría usar uno de estos estados para representar un dígito, que tendría que ser el 0 o el 1. Y claro, con lo que hemos visto, un grupo de estos biestables se podría utilizar para representar todo un número, usando un sistema de numeración con base dos, ya que disponemos únicamente de dos dígitos. Veamos cómo funcionaría este sistema. El sistema de numeración binario solamente tiene dos símbolos: el 0 y el 1. Por tanto su base es dos. Un número representado en binario será una serie de dígitos, que deberán ser el 0 o el 1. Página 3

Rafael Lozano

Representación de la información

Etiquetando cada dígito, comenzando por la derecha, como b 0, b1, b2, ... podemos aplicar el teorema fundamental de la numeración calcular el número representado como: b0 ·20 + b1 · 21 + b2 · 22 + b3 · 23 + ... Tomemos, como ejemplo, el número en binario 110010. Su valor sería: 0 · 20 + 1 · 21 + 0 · 22 + 0 · 23 + 1 · 24 + 1 · 25 = 0 · 1 + 1 · 2 + 0 · 4 + 0 · 8 + 1 · 16 + 1 · 32 = 50 Nótese que al aplicar el teorema fundamental de la numeración lo que hemos hecho es pasar un número del sistema binario al sistema decimal. También podemos aplicar el teorema fundamental de la numeración mentalmente, lo mejor es tomar las potencias de 2 (1, 2, 4, 8, 16, 32, 64, 128,... ) y comenzar por la derecha, sumando sólo aquellas en cuyo lugar aparezca un 1. Esto es fácil de hacer para números de 8 o menos dígitos, pero se vuelve algo complicado para números mayores. La conversión de un número expresado en el sistema decimal al sistema binario es muy sencilla: basta con realizar divisiones sucesivas por 2 (la base del sistema binario) hasta que el cociente sea 0 y colocar los restos obtenidos en cada una de ellas en orden inverso a como se han ido obteniendo. A modo de ejemplo vamos a pasar el número decimal 50 a binario. En la figura se puede apreciar como se realizan las sucesivas divisiones por dos y se toman los restos en orden inverso para obtener el número en binario.

Figura 1.- Conversión del número decimal 50 a binario

El sistema binario también es posicional y si recordamos del sistema decimal sabemos que en los sistemas posicionales el total de números que se pueden representar con n dígitos es Bn , siendo B la base del sistema. Por tanto con n dígitos binarios podemos representar 2 n números que estarán en el rango 0 y 2n – 1.

Como fácilmente se puede deducir, la cantidad de dígitos del número binario dependerá del valor del número decimal. En el caso anterior, el número queda representado por seis dígitos. Con seis dígitos binarios podemos representar 26 = 64 números que van desde 0 a 63. Sin embargo, para números iguales o superiores a 64, serían necesarios más dígitos. Normalmente se emplea la palabra bit como sinónimo de dígito binario. Además, en lugar de designar los dígitos diciendo "los de la derecha" y "los de la izquierda", se suele usar otra terminología para decir esto mismo. Si meditamos un poco, veremos que los dígitos más a la derecha influyen menos en la cantidad final que los de la izquierda. Por ejemplo, en el número 25672, si el dos de la derecha cambia a tres, la cantidad total sólo varía en una unidad. Pero si es el de la izquierda el que cambia a tres, la cantidad representada varía en 10000 unidades. Por eso, se suele referir a los dígitos más a la derecha como dígitos de menor peso, dígitos menos significativos o Least Significant Bits (LSB, en el caso de emplear el sistema binario); los dígitos más a la izquierda se suelen denominar dígitos de mayor peso, dígitos más significativos o Most Significant Bits (MSB, en caso de que se trate de números en sistema binario).

Página 4

Rafael Lozano

Representación de la información

2.3 Sistema de numeración octal Hemos visto que, debido a la naturaleza de los ordenadores digitales, los números se representan internamente en sistema binario. Pero el sistema binario, aunque sea el que utilizan los ordenadores, suele ser muy engorroso para los humanos. En cuanto el número alcanza los cuatro o cinco dígitos binarios, se hace difícil de recordar, y resulta muy sencillo equivocarse al escribirlo. Para evitar esta incomodidad, se empezó a utilizar el sistema octal. En algunos textos técnicos sobre sistemas operativos es posible encontrarse magnitudes expresadas en sistema octal. En este sistema de numeración, los dígitos que podemos utilizar son los ocho entre el 0 y el 7, ambos incluidos. Por tanto la base es 8. Este sistema también es posicional por lo que también se le puede aplicar a cualquier cantidad el teorema fundamental de la numeración.

Figura 2.- Conversión de decimal a octal

Pasar un número expresado en el sistema decimal al octal es muy sencillo. Hay que seguir el mismo proceso que para pasar un número decimal a binario, solo que en este caso a la hora de dividir hay que hacerlo por 8, que es la base del sistema octal. A la izquierda tenemos un ejemplo.

Si aplicamos el teorema fundamental de la numeración al número octal 2505 tenemos: 5 · 80 + 0 · 81 + 5 · 82 + 2 · 83 = 5 · 1 + 0 · 8 + 5 · 64 + 2 · 512 = 1349

2.4 Sistema de numeración hexadecimal En el sistema de numeración hexadecimal tenemos 16 dígitos, por tanto su base es 16. Ya que la base del sistema es 16, necesitamos 16 guarismos para representar los dígitos. En lugar de inventar nuevos símbolos para los dígitos del 10 al 15, se decidió usar las letras de la A a la F para hacerlo. Por tanto, los dígitos hexadecimales son 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. El hecho de tener tantos dígitos implica que se necesitan menos dígitos para representar cantidades muy grandes. Debido a ello, se suele Figura 3.- Conversión de decimal a hexadecimal emplear en programación para representar magnitudes muy grandes que no necesitan realizar operaciones aritméticas, como la paleta de colores.

Página 5

Rafael Lozano

Representación de la información

Al igual que los anteriores, el sistema de numeración hexadecimal es posicional y cumple el teorema fundamental de la numeración. Por tanto podemos pasar un número decimal a hexadecimal haciendo divisiones sucesivas por 16 y aplicando el teorema fundamental de la numeración podemos pasar un número hexadecimal a decimal, tal y como se ve en el ejemplo la figura. A continuación realizamos la operación contraria. 12 · 160 + 0 · 161 + 7 · 162 + 4 · 163 + 1 · 164 = 12 · 1 + 0 · 16 + 7 · 256 + 4 · 4096 + 1 · 65536 = 83724

2.5 Conversión entre sistemas La siguiente tabla muestra la correspondencia entre los diferentes sistemas de numeración que hemos visto. Decimal

Binario

Octal

Hexadecimal

0

0000

0

0

1

0001

1

1

2

0010

2

2

3

0011

3

3

4

0100

4

4

5

0101

5

5

6

0110

6

6

7

0111

7

7

8

1000

10

8

9

1001

11

9

10

1010

12

A

11

1011

13

B

12

1100

14

C

13

1101

15

D

14

1110

16

E

15

1111

17

F

Se aprecia claramente que cuantos más símbolos tiene un sistema de numeración menos dígitos se necesitan para representar cantidades grandes. Por ejemplo, para representar al 15 en el sistema binario se necesitan cuatro dígitos (1111) mientas que en el sistema hexadecimal solamente uno (F). En apartados anteriores hemos visto como pasar del sistema decimal al binario y viceversa. También en el sistema octal y el sistema hexadecimal. Sin embargo para otras conversiones en las que no hay un número decimal (hexadecimal, octal o binario) pasar de un numero a otro requiere hacer dos operaciones. Primero pasamos el número de una base a decimal y después de decimal a otra base. Por ejemplo, si queremos pasar un número Página 6

Rafael Lozano

Representación de la información

de hexadecimal a binario, tendremos que convertir el número hexadecimal a decimal aplicando el teorema fundamental de la numeración y el resultado se pasa a binario haciendo divisiones sucesivas por 2. Afortunadamente hay otro método que permite hacer una conversión directa. Como podemos apreciar en la tabla anterior, cada número en hexadecimal tiene una conversión directa con el número binario mediante un conjunto de 4 bits. Así, tenemos una equivalencia entre los grupos de cuatro dígitos binarios y los 16 dígitos hexadecimales. Por tanto la conversión de un número en hexadecimal a binario consiste en coger cada símbolo hexadecimal y sustituirlo por su correspondiente grupo de 4 bits. Por ejemplo, el número hexadecimal A01D en binario sería: Hexadecimal Binario

A

0

1

D

1010

0000

0001

1101

Por tanto A01D en binario es 1010000000011101. Para hacer la operación inversa se divide el número binario en grupos de 4 bits comenzando por los menos significativos y cada grupo se sustituye por su correspondiente símbolo hexadecimal. Si convertimos el número binario que obtuvimos en el ejemplo anterior quedaría así: Binario Hexadecimal

1010

0000

0001

1101

A

0

1

D

Con el sistema octal ocurre algo muy parecido. Vemos que los ocho dígitos octales tienen una correspondencia de un grupo de tres dígitos binarios. Por tanto, solamente hay que aplicar el mismo método anterior con la diferencia de que en lugar de grupos de 4 bits son grupos de 3 bits. Por ejemplo, el número 653 en octal se podría convertir en binario así: Octal Binario

6

5

3

110

101

011

Por tanto 653 en binario es 110101011. Para hacer la operación contraria dividimos el número binario en grupos de 3 bits y sustituimos cada grupo por su correspondiente dígito octal. Binario Octal

110

101

011

6

5

3

2.6 Notación en las diferentes bases Al haber símbolos iguales en los diferentes sistemas de numeración existe la posibilidad de que haya cifras que resulte muy difícil saber en que sistema de numeración están. Por ejemplo, el número 100 representa el número cien en decimal, el doscientos cincuenta y seis en hexadecimal, y el cuatro en binario. Es necesario adoptar una convención para indicar la base en que se representa junto con el número. Por defecto, un número sin ninguna especificación respecto a la base, se toma como número decimal. Cuando queremos especificar la base en que está representado un número, añadimos un subíndice detrás del número que puede ser una letra o un número. En algunos textos técnicos se emplea una letra: la b para binario, la o para octal, y la h para hexadecimal. Si no lleva letra el número está en decimal. Página 7

Rafael Lozano

Representación de la información

Sin embargo, cuando se emplea un número generalmente se utiliza la base del sistema de representación: 10 para decimal, 2 para binario, 8 para octal y 16 para hexadecimal. Al igual que antes si no hay especificación de la base, el número es decimal. Por ejemplo 1102) es un número binario, 7548) es un número octal y 390616) es un número hexadecimal. En muchos textos técnicos los números hexadecimales también se suelen representar con un número que comienza por 0x. Por ejemplo, el número anterior en hexadecimal sería 0x3906.

3 Codificación de la información Los elementos básicos de un sistema informático solamente aceptan y trabajan con datos en binario. Sin embargo, los datos que manipulan los seres humanos tienen diferente representación. Para poder representar la información de forma entendible por el ordenador hay que someterla a un proceso de codificación que permita almacenarla y tratarla. Una definición de codificación sería Transformación que representa los elementos de un conjunto mediante los de otro, de forma tal que a cada elemento del primer conjunto le corresponda un elemento distinto del segundo. La codificación establece las reglas que definen la correspondencia entre cada elemento de información y la secuencia de bits que constituye su código y no puede haber dos elementos de información diferentes que tengan la misma representación en binario.

3.1 Datos y tipos de datos En un sistema informático se pueden emplear diferentes sistemas de codificación en función de la naturaleza de la información a representar, es decir, del tipo de dato. No es lo mismo representar un número entero que uno fraccionario. Tampoco es lo mismo representar números positivos que números negativos. Finalmente, además de números los ordenadores manipulan información textual, con lo que habrá que establecer combinaciones binarias para los posibles caracteres que pueda haber. Por tanto, dependiendo del tipo de dato, se utilizarán unas codificaciones u otras, las que más convengan en cada caso. Un tipo de datos implica restricciones sobre los datos, como el rango posible de valores que puede tomar y las operaciones que podemos realizar. Los tipos de datos que un sistema informático puede utilizar son: ✔

Numérico ✗





Entero •

Con signo



Sin signo

Real •

Simple precisión



Doble precisión

Alfanumérico

Página 8

Rafael Lozano

Representación de la información

3.2 Entero sin signo Para representar números enteros sin signo, es decir, solamente números positivos, se emplea el código binario natural que consiste en utilizar la combinación binaria que se obtiene al pasar un número decimal a binario, tal y como se ha visto anteriormente. Si se disponen de n bits para representar un número, entonces el rango de representación está entre 0 y 2 n – 1. Por ejemplo, con 8 bits se pueden representar números positivos entre 0 y 255.

3.3 Entero con signo En el caso de los números enteros con signo, positivos y negativos, hay que buscar un sistema de codificación que permita representar tanto el módulo como el signo del número. A continuación se exponen varios.

3.3.1 Signo magnitud Según esta codificación, se emplea un bit para representar el signo y el resto de bits para representar el valor absoluto del número, el cual va en binario natural. El bit de signo es el más significativo y si su valor es 0 significa que el número es positivo y si su valor es 1 indica que el número es negativo. Con esta codificación, si se disponen de n bits para representar un número el rango de representación sería desde -2n-1 -1 hasta 2n-1 – 1. Por ejemplo, si disponemos de 8 bits para cada número, entonces el rango de representación va desde -127 hasta 127. Veamos cómo quedaría una equivalencia entre nuestro sistema decimal y este sistema binario con tal convención de signo, véase la siguiente tabla Binario 00000000 00000001 00000010 ... 01111110 01111111 10000000 10000001 10000010 … 11111110 11111111

Decimal +0 +1 +2 ... +126 +127 -0 -1 -2 ... -126 -127

Por ejemplo, supongamos que vamos a representar el +45 con 1 byte. Convertimos 45 en binario y obtenemos 101101. Esta combinación tiene 6 bits. Como vamos a emplear 1 byte (8 bits) para el resultado necesitamos 7 bits para el módulo del número, y el octavo para el signo. Por ello rellenamos con un cero por la izquierda y tenemos 0101101. Ya solo falta añadir el bit de signo que en este caso es 0 porque es positivo. Por tanto el número +45 en signo magnitud sería 00101101.

Página 9

Rafael Lozano

Representación de la información

3.3.2 Complemento a 1 La representación en signo magnitud acarrea una serie de problemas al realizar operaciones aritméticas en binario por lo que hubo que buscar un sistema de representación diferente. El uso de los complementos resultó una solución ideal. El complemento a uno consiste en emplear un bit, el más significativo para el signo. Si el número es positivo se emplea el 0 y si es negativo se emplea el 1. Para el módulo, si el número es positivo se emplea su correspondiente en binario natural y si es negativo se emplea su complemento a uno, que consiste en tomar su representación en binario natural y cambiar cada bit. Por ejemplo, el número +45 en complemento a uno con ocho bits sería 0 0101101. Si nos fijamos vemos que coincide con la representación en signo magnitud. Sin embargo, para representar al número -45 tendríamos lo siguiente: ✔

Bit de signo: 1



Combinación en binario natural del número 45: 0101101



Complemento a 1: 1010010. Hemos cambiado los bits de la combinación anterior. Los ceros se cambian a uno y los unos a ceros. Por tanto el número -45 en complemento a uno sería 1 1010010

3.3.3 Complemento a 2 Con la codificación anterior existe el problema de que hay dos combinaciones para el cero: 0 0000000 y 1 0000000. Para solucionar este problema se ideó el complemento a dos. El complemento a dos de un número es el resultado de sumar 1 al complemento a uno de ese número. Por ejemplo, el número +45 en complemento a dos sería 0 0101101, es decir coincide con las dos representaciones anteriores. Sin embargo el número -45 sería así: ✔

Bit de signo: 1



Combinación en binario natural del número 45: 0101101



Complemento a 1: 1010010. Hemos cambiado los bits de la combinación anterior. Los ceros se cambian a uno y los unos a ceros.



Sumamos 1 al anterior: 1010010 + 1 = 1010011 Por tanto el número -45 en complemento a dos sería 1 1010011

3.3.4 Exceso Esta codificación no emplea ningún bit para el signo del número. En su lugar cada número está representado por una combinación binaria que se obtiene después de haber añadido al número original un exceso que generalmente es de 2 n-1 siendo n el número de bits empleados para representar el número. Para entenderlo mejor vamos a ver un ejemplo creando la representación binaria del número 45 en exceso con 8 bits. ✔

Primero calculamos el exceso: 28-1 = 128

Página 10

Rafael Lozano

Representación de la información



Posteriormente sumamos 45 el exceso calculado antes, es decir 45 + 128 = 173



Ahora obtenemos la combinación binaria de 173 que es 10101101 El número 45 en exceso es 10101101

Ahora vamos a hacer lo mismo para el -45 y empleando también 8 bits. En este caso tendríamos: ✔

Primero calculamos el exceso: 28-1 = 128



Posteriormente sumamos -45 el exceso calculado antes, es decir -45 + 128 = 83



Ahora obtenemos la combinación binaria de 83 que es 01010011 El número -45 en exceso es 01010011

Según esta forma de codificar números enteros con signo, para representar números entre -128 y 127 utilizamos las combinaciones binarias de 0 a 255.

3.3.5 BCD Binary Code Decimal (Decimal Codificado en Binario) es un sistema para representar inicialmente números decimales en binario, donde cada dígito decimal es codificado con una combinación de 4 bits. Estas combinaciones son las mismas que se obtienen al pasar el número decimal a binario: Decimal BCD

0

1

2

3

4

5

6

7

8

9

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

Un número decimal se representa en binario sustituyendo cada dígito decimal por su correspondiente combinación binaria en BCD. Por ejemplo, supongamos el número decimal 7039. Su representación en BCD es 0111 0000 0011 1001. En BCD cada cifra decimal se representa por su correspondiente combinación de cuatro bits en binario natural. Esto es así porque para representar la cifra más alta, el 9, se necesitan 4 bits. Posteriormente, para poder representar el signo de un número se emplearon dos métodos: El BCD empaquetado emplea un byte para almacenar dos combinaciones BCD. En el último byte además de los bits del número se almacenaba el signo en el segundo cuarteto. Si era 1100 el número era positivo, si era 1101 entonces el número era negativo. Por ejemplo, si queremos representar el número 1992 sería de la siguiente forma.

Figura 4.- BCD empaquetado

El BCD desempaquetado utiliza un byte para cada dígito decimal. El primer cuarteto siempre es 1111 mientras que el segundo almacena la combinación BCD del número. El signo del número se almacena en el primer cuarteto del último byte. Al igual que antes, si el signo es 1100 es positivo y si es 1101 es negativo. En el siguiente ejemplo se representa el número -1992.

Página 11

Rafael Lozano

Representación de la información

Figura 5.- BCD desempaquetado

3.4 Numérico real Para representar números reales, aquellos que tienen parte fraccionaria, se necesitan codificaciones diferentes a las anteriores, ya que la complejidad aumenta. En este caso jugamos con el concepto de exactitud, que refleja la proximidad del valor del número al valor real. Si un número real tiene infinitos números fraccionarios tendremos que truncar el número y quedarnos con una cantidad limitada de la parte fraccionaria, ya que no es posible su representación en un ordenador, ni de ninguna otra manera. Antes de ver los sistemas de codificación de números reales vamos a ver como convertir un número real representado en el sistema decimal a binario. Por ejemplo, el número 49,397. Primero tendremos que coger la parte entera y convertirla a binario como hemos visto anteriormente. Si hacemos divisiones sucesivas entre 2 tendremos que el resultado es 110001. Ahora tendremos que convertir la parte fraccionaria a binario y para ello seguimos el siguiente proceso: ✔

Tomamos la parte fraccionaria y la multiplicamos por 2. En este ejemplo sería 0,397 x 2 = 0,794. Tomamos la parte entera del resultado como primer dígito binario: 0



Con la parte fraccionaria del resultado anterior volvemos a multiplicar por 2. Sería 0,794 x 2 = 1,588. Volvemos a tomar la parte entera del resultado como segundo dígito binario: 1



De nuevo tomamos la parte fraccionaria del resultado y la multiplicamos por 2. Sería 0,588 x 2 = 1,176. En este caso la parte entera es 1 y se toma como tercer dígito binario.

En la siguiente tabla se muestran las operaciones anteriores y continuamos realizando multiplicaciones por dos para continuar obteniendo dígitos binarios de la parte fraccionaria Resultado Parte fraccionaria

Multiplicar x2

Parte entera

Parte fraccionaria

0,397

0,794

0

0,794

0,794

1,588

1

0,588

0,588

1,176

1

0,176

0,176

0,352

0

0,352

0,352

0,704

0

0,704

0,704

1,408

1

0,408

¿Hasta cuando hay que seguir multiplicando por dos para obtener cifras en binario? Dependerá de la precisión que busquemos o del error admisible. Si queremos el resultado tenga un error inferior a 2-5 (0,03125) tendremos que obtener 5 dígitos binarios de la parte fraccionaria. En este punto es bueno recordar que una potencia con exponente negativo equivale a uno dividido por la misma potencia pero con exponente positivo. En el ejemplo anterior hemos obtenido 6 dígitos binarios de la parte fraccionaria, por lo que el error es inferior a 2-6. Página 12

Rafael Lozano

Representación de la información

Por último tenemos que componer el número real en binario uniendo la parte entera con la parte fraccionaria separados por una coma. En este ejemplo el resultado es 110001,011001. Este ejemplo es un poco atípico, ya que ha salido un número de 12 bits, cuando lo habitual es que los números reales se ajusten a un tamaño múltiplo de byte. Para el proceso inverso hay que aplicar el teorema fundamental de la numeración. Si recordamos lo visto al principio de este documento hay que numerar las posiciones de los dígitos binarios por la derecha desde 0. En este caso es similar, pero el dígito en la posición 0 es el que se encuentra justo a la izquierda de la coma decimal y los dígitos a la derecha de la coma decimal se numeran desde la izquierda desde -1. Vamos con el resultado del ejemplo anterior Posición

5

4

3

2

1

0

-1

-2

-3

-4

-5

-6

Dígito

1

1

0

0

0

1

0

1

1

0

0

1

24

23

22

21

20

2-1

2-2

2-3

2-4

2-5

2-6

Potencia 25

Si aplicamos el teorema fundamental de la numeración tenemos: 1 · 25 + 1 · 24 + 0 · 23 + 0 · 22 + 0 · 21 + 1 · 20 + 0 · 2-1 + 1 · 2-2 + 1 · 2-3 + 0 · 2-4 + 0 · 2-5 + 1 · 2-6 = 1·32 + 1·16 + 0·8 + 0·4 + 0·2 + 1·1 + 0·0,5 + 1·0,25 + 1·0,125 + 0·0,0625 + 0·0,03125 + 1·0,015625 32 + 16 + 1 + 0,25 + 0,125 + 0,015625 + = 49,390625 Observemos el resultado obtenido: 49,3900625. El número original antes de convertirse en binario era 49,397. No son iguales porque en su conversión a binario tuvimos que establecer un error y fue inferior a 2-6. De ahí que solamente obtuviéramos 6 dígitos binarios de la parte fraccionaria. Esto significa que la diferencia del valor real al valor obtenido tiene que ser menor que 2 -6 = 0,015625. Podemos comprobarlo hallando la diferencia entre el valor real y el obtenido 49,397 – 49,390625 = 0,006375 Vemos que el error obtenido es inferior a 2 -6 y por tanto es correcto. Vamos a ver a continuación los métodos de codificación de fraccionarios

3.4.1 Coma fija Según esta representación, la coma decimal ocupa un lugar fijo y por tanto no es necesario representarla en la combinación de bits. Para ello se destina una cantidad fija de dígitos binarios, los más significativos, para la parte entera de un número y otra cantidad para la parte fraccionaria. La cantidad de dígitos destinados a la parte fraccionaria indica en definitiva la posición de la coma dentro del número. Por ejemplo, supongamos que representamos números fraccionarios con 8 bits de los cuales los 5 más significativos son la parte entera y los 3 menos significativos son para la parte fraccionaria. El número más pequeño que podemos representar es 00000,000 2) y el mayor es 11111,1112). Es decir, el rango de números representado va desde 0,0 10) a 31,87510). Al usar la notación en coma fija, queda muy limitado el número de cantidades a representar y todas ellas deben tener la misma precisión. En el caso anterior no podremos representar números enteros mayores o iguales que 32 (2 5) ni números más pequeños que 0,125 (2 -3). Debido a este

Página 13

Rafael Lozano

Representación de la información

problema, su uso se vio reducido con la aparición de la representación en coma flotante.

3.4.2 Coma flotante La representación de números en coma flotante es una forma de notación científica con la cual se pueden representar números fraccionarios extremadamente grandes y pequeños de una manera muy eficiente y compacta, y con la que se pueden realizar operaciones aritméticas. El estándar para la representación en coma flotante es el IEEE 754. La representación en coma flotante es casi idéntica a la notación científica tradicional en el sistema decimal, con algunos añadidos y algunas diferencias. Un número binario en coma flotante se representa por la siguiente expresión

r=m · b

e



La mantisa m



La base b, que en el sistema binario es 2.



El exponente e, un número entero, el cual eleva la base a una potencia. Este exponente puede ser positivo o negativo.

En la representación binaria de coma flotante, el conjunto de bits para representar un número se dividen en : ✔

El bit de mayor peso define el valor del signo, 0 para positivo, 1 para negativo.



Al bit de signo le sigue una serie de bits que definen el exponente.



El resto de bits son la mantisa o parte significativa.

Supongamos números de 16 bits en los que se emplean un bit para el signo, seis bits para el exponente y 9 bits para la mantisa o parte significativa. Los siguientes números serían un ejemplo

Al igual que en la notación científica, el exponente indica cuanto se desplaza la coma. En este ejemplo tenemos 6 bits lo que significa que tenemos hasta 64 valores diferentes: de -31 a 32. Esto significa que podemos representar potencias de 2 -31 a 232, es decir, la coma se puede desplazar 31 dígitos a la izquierda o 32 dígitos a la derecha. Para el exponente no se emplea un bit de signo. Así se evitaría perder un bit para representar un mayor rango de valores. Sin embargo había que buscar una representación para el exponente que permitiera representar números negativos si necesidad de utilizar un bit de signo. Por esta razón se emplea una representación en exceso. Tal y como vimos antes, esta consiste en sumar un desplazamiento al valor real del número. El exceso es de 2 n-1-1, siendo n el número de bits que se tienen. Si en nuestro caso el exponente es de 6 bits, el exceso es 2 6-1-1 = 31. Los exponentes que Página 14

Rafael Lozano

Representación de la información

tendríamos son Exponente

Exceso

Valor decimal

Representación binaria

-31

-31+31

0

000000

-30

-30+31

1

000001

-29

-29+31

2

000010

-28

-28+31

3

000011

31

31+31

62

111110

32

32+31

63

111111



Con 6 bits el exponente más bajo es 000000, que equivale a -31, mientras que el más alto es 111111, que equivale a 32. Los exponentes de -31 a 32 se representan con las combinaciones binarias del 0 a 63. La mantisa generalmente está normalizada lo que significa que siempre tiene un 1 como el bit más significativo y este 1 corresponde a la parte entera. Debido a que el bit más significativo de la mantisa siempre es 1, para ahorrar espacio y para aumentar la precisión en un bit, este bit no se almacena, y por ello se denomina bit oculto o implícito. Sin embargo, antes de realizar los cálculos este bit implícito debe convertirse en un bit explícito. Por tanto la mantisa usa 10 dígitos de los cuales almacena 9 y 1 es implícito. El estándar IEEE 754 define los siguientes formatos para números binarios en coma flotante: Precisión

Longitud

Signo

Exponente

Mantisa

Media precisión

16

1

6

9

Simple precisión

32

1

8

23

Doble precisión

64

1

11

52

Cuadruple precisión

128

1

15

112

Para convertir un número en coma flotante binario a decimal tenemos que extraer cada uno de sus componentes y pasarlos a decimal. Por ejemplo, supongamos que queremos pasar el número en coma flotante 0100100100000100 a decimal. ✔

El número tiene 16 bits, por tanto está en media precisión. Tiene 1 bit de signo, 6 bits de exponente y 9 de mantisa.



El bit más significativo es 0, por tanto el número es positivo.



El exponente es 100100. Si lo pasamos a decimal tenemos 36, que al restarle el exceso de 31 tenemos 5.



La mantisa es 1,100000100. Recordemos que el uno de la parte entera es el bit implícito y no se almacena en el número. Si lo pasamos a decimal tenemos 1,5078125.



El número real es 1,5078125 · 25 = 48,25

Página 15

Rafael Lozano

Representación de la información

Para convertir un número decimal fraccionario a binario en coma flotante debemos primero convertirlo a binario natural utilizando el teorema fundamental de la numeración. Posteriormente hay que normalizarlo y obtener el exponente en función del número de desplazamientos de la coma decimal que hayamos hecho. Veamos un ejemplo, vamos a convertir el número 48,297 10) a binario en coma flotante. ✔

La parte entera es 48 que en binario es 110000



La parte fraccionaria es 0,297. Si la pasamos a binario con un error inferior a 2 -6 debemos extraer 6 dígitos binarios. Según las operaciones de debajo el resultado es 010011. 0,297 x 2 = 0,594 => 0 0,594 x 2 = 1,188 => 1 0,188 x 2 = 0,376 => 0 0,376 x 2 = 0,752 => 0 0,752 x 2 = 1,504 => 1 0,504 x 2 = 1,008 => 1



El número binario es 110000,010011.



Ahora tenemos que normalizarlo desplazando la coma hasta que el primer bit de la parte entera sea 1. Sería 110000,010011 => 1,10000010011



Hemos desplazado la coma a la izquierda 5 posiciones lo que equivale a dividir por 2 5. Para que se mantenga el mismo valor del número tenemos que poner un exponente de 5. Como el exponente se representa en exceso sería 5 + 31 = 36 => 100100.



El número 48,29710) en coma flotante es 0 100100 100000100

Vemos que el bit 1 de la parte entera lo hemos desechado porque va implícito y también hemos tenido que desechar los dos bits menos significativos de la mantisa, ya que esta solamente tiene 9 bits. Eso significa que hemos perdido precisión.

3.5 Alfanumérica Un ordenador solamente trabaja con dígitos binarios. Para poder almacenar y manipular información de tipo texto es necesario una codificación que permita asignar a cada carácter una combinación de bits. En este caso, un código alfanumérico establece como se asigna una combinación de bits a un carácter. Los caracteres que podemos encontrar en un sistema informático son: ✔

Alfabéticos, formados por letras mayúsculas y minúsculas.



Numéricos, formados por dígitos del 0 al 9.



Especiales, aquí se incluyen los signos de puntuación, operadores aritméticos y algunos caracteres como @, %, &, …



De control, como el salto de línea, escape, tabulación, retroceso, activación de mayúsculas, etc. Página 16

Rafael Lozano

Representación de la información

Los siguientes códigos también se denominan de entrada y salida, ya que los datos se introducen en el ordenador a través de un periférico de entrada y salida.

3.5.1 EBCDIC Extended BCD Interchange Code (Código BCD extendido para intercambio). Este código surge como una ampliación del código BCD. En las transmisiones de datos es necesario utilizar un gran número de caracteres. De ahí que el código BCD se extendiera a una representación utilizando 8 bits dando origen al código EBCDIC. Fue desarrollado por IBM para utilizarlo en sus ordenadores como método normalizado de asignación de valores binarios a los caracteres alfabéticos, numéricos, de puntuación y de control de transmisión. EBCDIC es análogo al esquema de codificación ASCII. Se diferencia por utilizar 8 bits para representar un carácter, lo que permite 256 caracteres posibles.

Figura 6.- Código EBCDIC

Los números del 0 al 9 comienzan por 1111 y los otros cuatro bits restantes coinciden con su código BCD. Las letras minúsculas y mayúsculas se dividen en tres grupos respectivamente. Los cuatro bits más significativos de cada grupo son iguales, mientras que los cuatro bits menos significativos representan la posición de la letra dentro del grupo.

3.5.2 ASCII ASCII (American Standard Code for Information Interchange, Código Estándar Americano para el Intercambio de Información), es un código de caracteres basado en el alfabeto latino, tal como se usa en inglés moderno y en otras lenguas occidentales. Las ordenadores solamente entienden números binarios. El código ASCII es una representación binaria de un carácter como ‘a’ o ‘W’. Como otros códigos de formato de representación de caracteres, el ASCII es un método para una correspondencia entre una combinación de bits y una serie de símbolos alfanuméricos, permitiendo de esta forma la comunicación entre dispositivos digitales así Página 17

Rafael Lozano

Representación de la información

como su procesado y almacenamiento. El código de caracteres ASCII se usa casi en todos los ordenadores, especialmente con ordenadores personales y estaciones de trabajo. Define códigos para 32 caracteres no imprimibles, de los cuales la mayoría son caracteres de control obsoletos que tienen efecto sobre cómo 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 como el teclado. ASCII es, en sentido estricto, un código de siete bits, lo que significa que usa cadenas de bits representables con siete dígitos binarios (que van de 0 a 127 en base decimal) para representar información de caracteres. En el momento en el que se introdujo el código ASCII muchos ordenadores trabajaban con grupos de ocho bits (bytes u octetos), como la unidad mínima de información; donde el octavo bit se usaba habitualmente como bit de paridad con funciones de control de errores en líneas de comunicación u otras funciones específicas del dispositivo. Las máquinas que no usaban la comprobación de paridad asignaban al octavo bit el valor cero o uno, dependiendo del sistema en concreto. El código ASCII define una relación entre caracteres específicos y secuencias de bits que se dividen en los siguientes grupos.

3.5.2.1

Caracteres de control

El código ASCII reserva los primeros 32 códigos (numerados del 0 al 31 en decimal) para carácteres de control: códigos no pensados originalmente para representar información imprimible, sino para controlar dispositivos (como impresoras) que usaban ASCII. Por ejemplo, el carácter 10 representa la función "nueva línea" (line feed), que hace que una impresora avance el papel, y el carácter 27 representa la tecla "escape" que se encuentra en la esquina superior izquierda de los teclados comunes. El código 127 (los ocho bits a uno), otro carácter especial, equivale a "suprimir" ("delete"). Muchos de los caracteres de control ASCII servían para comunicaciones en redes de ordenadores para marcar paquetes de datos o controlar protocolos de transmisión de datos. Por ejemplo, el carácter ENQ (Enquiry) se emplea para localizar alguna estación de trabajo en la red. El carácter ACK se emplea para indicar que se ha recibido correctamente una información. SOH (Start Of Header) se emplea para indicar el inicio de una trama de datos y STX para indicar el inicio del texto dentro de una trama. El carácter ETX (End of Text) para indicar el final del texto en una trama. Los caracteres de control se muestran en la figura 1.

Página 18

Rafael Lozano

Representación de la información

Figura 7.- Caracteres ASCII no imprimibles

3.5.2.2

Figura 8.- Caracteres imprimibles ASCII

Caracteres imprimibles

El carácter espacio, designa al espacio entre palabras, y se produce normalmente por la barra espaciadora de un teclado. Los códigos del 33 al 126 se conocen como caracteres imprimibles, y representan letras, dígitos, signos de puntuación y varios símbolos. El ASCII de ocho bits proporciona ocho caracteres "nacionales". Los caracteres imprimibles del 32 al 127 se muestran en la figura 2.

3.5.2.3

Página de códigos 437

En 1981, la empresa IBM desarrolló una extensión de 8 bits del código ASCII, llamada "pagina de código 437", en esta versión se reemplazaron algunos caracteres de control obsoletos, por caracteres gráficos. Además se incorporaron 128 caracteres nuevos, con símbolos, signos, gráficos adicionales y letras latinas, necesarias para la escrituras de textos en otros idiomas, como por ejemplo el español. Así fue como se agregaron los caracteres que van del ASCII 128 al 255. IBM incluyó soporte a esta página de código en el hardware de su modelo 5150, conocido como "IBM-PC", considerado el primer ordenador personal. El sistema operativo de este modelo, el "MSDOS" también utilizaba el código ASCII extendido. Página 19

Rafael Lozano

Representación de la información

Los caracteres imprimibles del 128 al 255 se muestran en la figura 3.

Figura 9.- Caracteres imprimibles del ASCII extendido

3.5.3 ISO-8859-1 A medida que la tecnología informática se difundió a lo largo del mundo, se desarrollaron diferentes estándares y las empresas desarrollaron muchas variaciones del código ASCII para facilitar la escritura de lenguas diferentes al inglés que usaran alfabetos latinos. Los estándares de ocho bits dejaron los 127 primeros caracteres intactos y añadieron valores adicionales por encima de los 8 bits. Esto permitió la representación de un abanico mayor de lenguajes, pero estos estándares continuaron sufriendo incompatibilidades y limitaciones. La variante más popular es ISO-8859-1, también conocida como Alfabeto Latino nº 1 o ISO Latin 1, que define la codificación del alfabeto latino, incluyendo los diacríticos (como letras acentuadas, ñ, ç), y letras especiales (como ß, Ø), necesarios para la escritura de las siguientes lenguas originarias de Europa occidental: afrikáans, alemán, castellano, español, catalán, euskera, aragonés, asturiano, Página 20

Rafael Lozano

Representación de la información

danés, escocés, feroés, finés, francés, gaélico, gallego, inglés, islandés, italiano, holandés, noruego, portugués y sueco. El ISO-8859-1 posee la codificación ASCII en su rango inicial (128 caracteres) y otros 128 caracteres para cada codificación, con lo que en total utilizan 8 bits. La norma ISO 8859-15 consistió en una revisión de la ISO 8859-1, incorporando el símbolo del Euro y algunos caracteres necesarios para dar soporte completo al francés, finés y estonio.

Figura 10.- Código ISO-8859-1

3.5.4 Unicode Unicode es un estándar de codificación de caracteres diseñado para facilitar el tratamiento informático, transmisión y visualización de textos en múltiples lenguajes, además de textos clásicos de lenguas muertas. El término Unicode proviene de los tres objetivos perseguidos: universalidad, uniformidad y unicidad. Unicode especifica un nombre e identificador numérico único para cada carácter o símbolo, el code point o punto de código, además de otra información necesaria para su uso correcto: Página 21

Rafael Lozano

Representación de la información

direccionalidad, mayúsculas y otros atributos. Unicode trata todos los caracteres de forma equivalente, lo que significa que se pueden mezclar en un mismo texto sin la introducción de marcas o caracteres de control. El objetivo principal de Unicode ha sido 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 plurilingües. Unicode se ha vuelto el más extenso y completo esquema de codificación de caracteres, siendo el dominante en los sistemas informáticos de hoy en día.

3.5.4.1

Repertorio de caracteres

El elemento básico del estándar Unicode es el carácter. Se considera un carácter al elemento más pequeño de un sistema de escritura con significado. El estándar Unicode codifica los caracteres esenciales definiéndolos de forma abstracta y deja la representación visual (tamaño, dimensión, fuente o estilo) al software que lo trate, como procesadores de texto o navegadores web. Se incluyen: ✔

Letras.



Signos diacríticos (acentos, diéresis, etc).



Caracteres de puntuación (punto, coma, punto y coma, dos puntos, etc)



Ideogramas (icono o símbolo que representa una idea o concepto abstracto, muy utilizados en alfabetos como el japones o el chino).



Caracteres silábicos (un carácter silábico representa una sílaba, como en la escritura kana del japonés).



Caracteres de control y otros símbolos.

Los caracteres se agrupan en alfabetos o sistemas de escritura. Se considera que son diferentes los caracteres de alfabetos distintos, aunque compartan forma y significación. Los caracteres se identifican mediante un número o punto de código y su nombre o descripción. Cuando se ha asignado un código a un carácter, se dice que dicho carácter está codificado. En Unicode hay 1.114.112 caracteres posibles, por tanto el punto de código está entre 0 y 10FFFF16. Los puntos de código se representan utilizando notación hexadecimal agregando el prefijo U+. El valor hexadecimal se completa con ceros hasta 4 dígitos hexadecimales cuando es necesario; si es de longitud mayor que 4 dígitos no se agregan ceros.

3.5.4.2

Formas de codificación

Los puntos de código de Unicode se identifican por un número entero. Un ordenador utilizará unidades de 8, 16 o 32 bits para representar dichos números enteros. Las formas de codificación de Unicode establecen como los puntos de código se representan en el ordenador. Unicode define tres formas de codificación bajo el nombre UTF o Formato de Transformación Unicode (Unicode Transformation Format): ✔

UTF-8.- Codificación orientada a 8 bits (1 byte) con símbolos de longitud variable.



UTF-16.- Codificación de 16 bits (2 bytes) de longitud variable.

Página 22

Rafael Lozano



Representación de la información

UTF-32.- Codificación de 32 bits de longitud fija, y la más sencilla de las tres.

Las formas de codificación se limitan a describir el modo en que se representan los puntos de código en formato inteligible por la máquina.

3.5.4.3

UTF-8

UTF-8 (8-bit Unicode Transformation Format) es un formato de codificación de caracteres Unicode utilizando símbolos de longitud variable. Sus características principales son: ✔

Es capaz de representar cualquier carácter Unicode.



Usa símbolos de longitud variable (de 1 a 4 bytes por carácter Unicode).



Incluye la especificación US-ASCII de 7 bits, por lo que cualquier mensaje ASCII se representa sin cambios.



Incluye sincronía. Es posible determinar el inicio de cada carácter independientemente del número de bytes que ocupa.



No superposición. Los conjuntos de valores que puede tomar cada byte de un carácter multibyte, son disjuntos, por lo que no es posible confundirlos entre sí.

Estas características lo hacen atractivo en la codificación de correos electrónicos y páginas web. En http://www.utf8-chartable.de/ se puede encontrar los caracteres unicode en formato utf8. UTF-8 divide los caracteres Unicode en varios grupos, en función del número de bytes necesarios para codificarlos. El número de bytes depende exclusivamente del código de carácter asignado por Unicode y del número de bytes necesario para representarlo. La distribución de caracteres es la siguiente: ✔

Caracteres codificados con un byte.-: Los incluidos en ASCII, un total de 128 caracteres.



Caracteres codificados con dos bytes.- Un total de 1920 caracteres. Este grupo incluye los caracteres romances más signos diacríticos, y los alfabetos griego, cirílico, copto, armenio, hebreo y árabe entre otros.



Caracteres codificados con tres bytes.- Incluye los caracteres más comunes del sistema CJK (chino, japones y coreano) y otros caracteres históricos o poco habituales. Junto al grupo anterior, incluye la práctica totalidad de caracteres de uso común.



Caracteres codificados con cuatro bytes.- Símbolos matemáticos y alfabetos clásicos para uso principalmente académico alfabeto persa, fenicio, etc. Contiene los caracteres del sistema CJK no incluidos en el anterior. La mayoría son caracteres muy raros o de uso poco común.

Una propiedad importante de la codificación es que los bits más significativos del primer byte de una secuencia multi-byte determinan la longitud de la secuencia. Estos bits más significativos 110 para secuencias de dos bytes; 1110 para secuencias de tres bytes, etc. Estos bits además proporcionan la información de sincronía que permite identificar el inicio de un símbolo. La tabla siguiente muestra la forma en que se codifican los caracteres. Los valores fijos al principio de cada byte garantizan el cumplimento del principio de no superposición, pues son

Página 23

Rafael Lozano

Representación de la información

distintos en función de la posición del byte en la cadena. Rango de punto de UTF-8 código UNICODE

Descripción

000000-00007F

0xxxxxxx

Rango equivalente a ASCII. Caracteres de un único byte donde el bit más significativo es 0

000080-0007FF

110yyyyy 10xxxxxx

Caracteres de dos bytes. El primer byte comienza con 110, el segundo byte comienza con 10

000800-00FFFF

1110zzzz 10yyyyyy 10xxxxxx

Símbolos de tres bytes. El primer byte comienza con 1110, los bytes siguientes comienzan con 10

010000-10FFFF

11110uuu 10uuzzzz 10yyyyyy Símbolos de cuatro bytes. El primer byte 10xxxxxx comienza con 11110, los bytes siguientes comienzan con 10

Veamos, a modo de ejemplo, cómo se codifica en UTF-8 el carácter ñ, que en Unicode tiene el punto de código 0x00F1: ✔

Su valor se sitúa en el rango de 0x0080 a 0x07FF. Una consulta a la tabla permite ver que debe ser codificado usando 2 bytes, con el formato 110yyyyy 10xxxxxx.



El valor hexadecimal 0x00F1 es equivalente al binario (0000-0)000-1111-0001 (los primeros 5 bits se ignoran, ya que no son necesarios para representar valores en el rango especificado).



Los 11 bits requeridos se sitúan ordenados en la posición marcada por las y en el primer byte y las x en el segundo: 11000011 10110001.

El resultado final son dos bytes con los valores hexadecimales 0xC3 0xB1. Ese es el código de la letra ñ en UTF-8.

4 Medidas de la información La unidad más pequeña de información en un ordenador corresponde a un dígito binario, es decir, un cero o un uno. A este dígito se le denomina bit, abreviatura de la expresión en inglés binary digit. Al conjunto de 8 bits se le denomina byte. Estas unidades de medida resultan muy pequeñas, por lo que para cuantificar cantidades de información grandes se necesitan múltiplos del byte: Kilobyte, Megabyte, Gigabyte, etc. En la siguiente tabla se muestra la relación entre las distintas magnitudes: Unidad KB

1024 bytes

MB

1024 KB

GB

1024 MB

TB

1024 GB

Página 24

Rafael Lozano

Representación de la información

PB

1024 TB

EB

1024 PB

ZB

1024 EB

YB

1024 ZB

Podemos pasar de una medida superior a otra inferior hay que multiplicar por 1024 y si queremos pasar de una medida inferior a otra superior hay que dividir entre 2014.

Página 25

Rafael Lozano

Representación de la información

5 Bibliografía WIKIPEDIA, IEEE coma flotante [acceso noviembre 2013]. Disponible en WIKIPEDIA, Unicode [acceso noviembre 2013]. Disponible en BELTRAN, J. Lenguaje ensamblador de los 80x86(Guias prácticas). 1994 Anaya Multimedia ISBN 9788476146224

Página 27

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.