0% encontró este documento útil (0 votos)
15 vistas28 páginas

03 CodificacionInformacion

El documento aborda los sistemas de codificación numérica y alfanumérica en informática, incluyendo la codificación en coma fija y coma flotante, así como la evolución de sistemas alfanuméricos como ASCII y Unicode. Se detallan métodos de representación numérica como Signo y Magnitud, Complemento a 1 y Complemento a 2, explicando sus ventajas e inconvenientes. Además, se discuten ejemplos prácticos de codificación y el rango de representación asociado a cada método.

Cargado por

mower15464
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
15 vistas28 páginas

03 CodificacionInformacion

El documento aborda los sistemas de codificación numérica y alfanumérica en informática, incluyendo la codificación en coma fija y coma flotante, así como la evolución de sistemas alfanuméricos como ASCII y Unicode. Se detallan métodos de representación numérica como Signo y Magnitud, Complemento a 1 y Complemento a 2, explicando sus ventajas e inconvenientes. Además, se discuten ejemplos prácticos de codificación y el rango de representación asociado a cada método.

Cargado por

mower15464
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Sistemas informáticos

Codificación de la información

1. SISTEMAS DE CODIFICACION NUMÉRICA.


1.1. COMA FIJA.
1.1.1. Codificación en Signo y Magnitud (Módulo y Signo).
1.1.2. Complemento a 1.
1.1.3. Complemento a 2.
1.1.4. Exceso a 2 elevado a (N-1)
1.1.5. Decimal Codificado en Binario (BCD) y variantes (códigos progresivos).
A. Decimal Desempaquetado.
B. Decimal Empaquetado.
1.2. COMA FLOTANTE
1.2.1. Coma flotante Simple Precisión
1.2.2. Coma flotante Doble precisión.

2. SISTEMAS DE CODIFICACIÓN ALFANUMÉRICA.


2.1. Introducción.
2.2. Evolución histórica: ASCII, EBCDIC, UNICODE
2.3. El nuevo sistema de codificación alfanumérica: Unicode + UTF-8
2.4. Ejemplos de codificación Unicode/UTF-8

Departamento de Informática. Profesor: Aurelio Vidal Algarra 1


Introducción a los sistemas informáticos.

1. SISTEMAS DE CODIFICACIÓN NUMÉRICA.

Ya sabemos manejarnos con los sistemas de numeración más utilizados en informática, ahora
vamos a ver como se agrupan una secuencia de bits para representar un determinado tipo de
datos (numéricos, alfanuméricos, de control de transmisión, etc).

1.1. COMA FIJA

Hasta ahora hemos hablado de números enteros y fraccionarios en distintos sistemas de nume-
ración, pero no lo hemos hecho de los números negativos. Al considerar los negativos unifi-
camos las operaciones de adición y sustracción, dado que la resta no es más que la suma cam-
biando el signo del segundo sumando (minuendo): A - B = A + (-B)

Para indicar que un número es negativo añadimos el símbolo ‘-‘. Pero el ordenador sólo traba-
ja con 0 y 1, por tanto tendremos que pensar en como indicarle al ordenador que un número es
negativo. Todos los sistemas de codificación de números definen como deben representarse
los números positivos y negativos, los números enteros y los fraccionarios.

Dependiendo del tipo de número que se quiera representar, las operaciones aritméticas que se
efectúen y el rango a representar nos podemos encontrar con los siguientes tipos o códigos de
representación numérica:

 Codificación en Signo y Magnitud (o Módulo y Signo).


 Codificación en Complemento a 1.
 Codificación en Complemento a 2.
 Decimal Codificado en Binario (BCD) y sus variantes. Códigos progresivos.
 Codificación en Coma Flotante.

Es primordial hacer constar que, en cualquiera de los métodos apuntados, disponemos de un


número limitado y fijo de bits para cada dato que se vaya a representar ya que la capacidad
del ordenador es finita. Este número de bits lo representaremos por N en los siguientes apar-
tados.

Se denomina Rango de Representación al conjunto de números que es capaz de representar


una determinada codificación. El rango de representación de cualquier método de codifica-
ción binaria dependerá del número de bits reservados para su representación interna (N).

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 2


Introducción a los sistemas informáticos.

1.1.1. Codificación en Signo y Magnitud (Módulo y signo):

En este sistema de codificación el bit situado más a la izquierda representa el Signo, y su va-
lor será: 0 para los números positivos (+)
1 para los negativos (-)
El resto de los bits (N-1) representan el Módulo del número. Este vendrá dado por su corres-
pondiente valor binario.

EJEMPLO: Supongamos que el número de bits reservados para la codificación de números


enteros es de 8 bits (N=8) y queremos codificar los números +10 y –10

+10 sería 0 000 1010


-10 sería 1 000 1010
SIGNO

En el ejemplo anterior (N=8), su rango de representación es: de - 127 a + 127

(- 2 N-1 + 1) a (+ 2 N-1 - 1)

¿Ventaja?: Rango simétrico

Inconveniente muy importante: El valor cero tiene dos representaciones distintas.


Si N=8, +0  0000 0000
-0  1000 0000
Ejemplo sencillo para comprobar todas las combinaciones binarias correspondientes a
los números positivos y negativos con su signo codificados en Signo y Magnitud. Para
ello supondremos N = 4 bits
Deducciones con lo aprendido hasta el momento:
 Con 4 bits dispondremos de 24 combinaciones binarias que irían desde el 0000 hasta el
1111. Esto es, 16 cantidades numéricas cuyos valores decimales sin signo son: 0, 1, 2, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 y 15
 Si los 4 bits se utilizan para codificar cantidades numéricas con signo, al utilizar la codi-
ficación Signo y Magnitud, la correspondencia entre las cantidades representadas y cada
una de las 16 combinaciones binarias posibles sería, en este caso, la siguiente:
0000 (+0) 0 1000 (-0) 8
0001 (+1) 1 1001 (-1) 9
0010 (+2) 2 1010 (-2) 10
0011 (+3) 3 1011 (-3) 11
0100 (+4) 4 1100 (-4) 12
0101 (+5) 5 1101 (-5) 13
0110 (+6) 6 1110 (-6) 14
0111 (+7) 7 1111 (-7) 15
 Ahora sólo podemos representar la mitad de sus valores numéricos decimales, eso sí, con
su signo, y el cero utiliza dos combinaciones binarias distintas formando, parte de los
positivos y de los negativos.
 Por tanto, el rango de valores representables en este caso es de -7 a +7:
(- 2 4-1 + 1) a (+ 2 4-1 - 1)

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 3


Introducción a los sistemas informáticos.

1.1.2. Complemento a 1.

Números positivos: su codificación es exactamente igual que la vista en Módulo y Signo. La


diferencia está en la representación de los números negativos.
Números negativos: su codificación se obtiene en dos pasos:
1º Obtenemos su codificación positiva con N bits (igual que en Signo y Magnitud).
2º Cambiamos todos los ceros por unos y los unos por ceros (complemento a 1)

EJEMPLO: Codificar en complemento a 1 el número negativo –12, siendo N=8.


+12 sería 0 0 0 0 1 1 0 0
-12 es 1 1 1 1 0 0 1 1
El rango de representación de este método es el mismo que para Módulo y Signo, con sus
mismas ¿ventajas? e inconvenientes.
- Para 8 bits: -127 <= x <= 127
- Para 16 bits: -32767 <= x <= 32767
- Para 32 bits: -2147483647 <= x <= 2147483647
Dos representaciones distintas para el 0: Si N=8, +0  0000 0000
-0  1111 1111

Ejemplo sencillo para comprobar todas las combinaciones binarias correspondientes a


los números positivos y negativos con su signo codificados en Complemento a 1. Para
ello supondremos N = 4 bits
Deducciones con lo aprendido hasta el momento:
 Con 4 bits dispondremos de 24 combinaciones binarias que irían desde el 0000 hasta el
1111. Esto es, 16 cantidades numéricas cuyos valores decimales sin signo son: 0, 1, 2, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 y 15
 Al utilizar la codificación Complemento a 1, la correspondencia entre las cantidades con
signo representadas y cada una de las 16 combinaciones binarias posibles sería, en este
caso, la siguiente:
0000 (+0) 0 1111 (-0) 15
0001 (+1) 1 1110 (-1) 14
0010 (+2) 2 1101 (-2) 13
0011 (+3) 3 1100 (-3) 12
0100 (+4) 4 1011 (-4) 11
0101 (+5) 5 1010 (-5) 10
0110 (+6) 6 1001 (-6) 9
0111 (+7) 7 1000 (-7) 8
 Al igual que en Signo y Magnitud, sólo podemos representar la mitad de valores numéri-
cos decimales, eso sí, con su signo. El cero sigue utilizando dos combinaciones binarias
distintas formando, parte de los positivos y de los negativos. Pero observamos que la
asignación binaria de los números negativos es distinta a la codificación en Signo y
Magnitud, aunque todos ellos comienzan con un 1 también.
 El rango de valores representables continua siendo igual que en Signo y Magnitud, de -7
a +7:
(- 2 4-1 + 1) a (+ 2 4-1 - 1)

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 4


Introducción a los sistemas informáticos.

CURIOSIDAD: OPERACIONES BINARIAS EN COMPLEMENTO A 1.


El ordenador solo suma. La forma de operar aritméticamente es igual que en binario, con las
siguientes salvedades:
- Cuando uno de los números es negativo y el otro positivo, puede ocurrir dos cosas:
o aparece acarreo (el nº positivo es mayor que el negativo, por ejemplo: -3 + 10), en
este caso, el acarreo se suma al resultado para obtener el resultado definitivo;
o no aparece acarreo (el nº positivo es menor que el negativo, por ejemplo: -10 +3),
en este caso, el resultado será directamente el número negativo correspondiente.
- Si los dos números a sumar son del mismo signo (positivos o negativos) y se produce
acarreo o el resultado aparece con el signo contrario al de los sumandos es que hemos
sobrepasado el rango de representación y se produce lo que denominamos error de des-
bordamiento u "overflow".

Ejemplo: Positivo mayor que negativo. Sumar los números 10 y -3 en complemento a 1


para 8 bits (N=8).

0 0 0 0 1 0 1 0 10
+ 1 1 1 1 1 1 0 0 + (-3)
acarreo 1 0 0 0 0 0 1 1 0
+ 1 acarreo

0 0 0 0 0 1 1 1 7

1 1 1 1 1 1 0 0 (-3)
+ 0 0 0 0 1 0 1 0 + 10
acarreo 1 0 0 0 0 0 1 1 0
+ 1 acarreo

0 0 0 0 0 1 1 1 7

Ejemplo: Positivo menor que negativo


1 1 1 1 0 1 0 1 (-10)
+ 0 0 0 0 0 0 1 1 + 3
1 1 1 1 1 0 0 0 resultado (–7)

Ejemplo: Desbordamiento
0 1 1 1 1 1 1 1 127
+ 0 0 0 0 0 0 1 1 + 3
Signo<>operados 1 0 0 0 0 0 1 0 overflow

1 0 0 0 0 0 0 0 (-127)
+ 1 1 1 1 1 1 0 0 + (-3)
Acarreo y Signo<>operados 1 0 1 1 1 1 1 0 0 overflow

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 5


Introducción a los sistemas informáticos.

1.1.3. Complemento a 2.

Números positivos: su codificación es exactamente igual que la vista en Módulo y Signo y


Complemento a 1. La diferencia está en la representación de los números negativos.

Números negativos: Calculamos su correspondiente combinación binaria. A partir de aquí


pueden darse tres casos:
A. El número de bits es MAYOR que N. En este caso, el número excede el rango de repre-
sentación (Overflow)
B. El número de bits es MENOR que N. En este caso, el número estará dentro del rango de
representación y seguiremos los 3 pasos siguientes para obtener su codificación en com-
plemento a 2:
1. Completamos la combinación binaria con ceros por la izquierda hasta alcanzar los N bits.
2. Complementamos toda la combinación binaria obtenida, esto es, cambiamos todos los ceros
por unos y todos los unos por ceros (complemento a 1)
3. A la combinación obtenida le sumamos 1, despreciando el último acarreo si se existe
C. El número de bits es IGUAL que N. En este caso, sólo en un caso el número estará dentro
del rango de representación y se corresponde con el mayor de los números negativos. Pa-
ra el resto de los casos se producirá un error de overflow ya que la combinación binaria
obtenida al final del proceso, aparecerá como si fuesen números positivos (bit de signo a
0 en lugar de 1). En este caso, sólo es necesario realizar los 2 pasos siguientes:
1. Complementamos la combinación binaria obtenida, (complemento a 1)
2. A la combinación obtenida le sumamos 1

EJEMPLO A: Codificar en complemento a 2 el número negativo –420, siendo N=8.


Conversión a binario 110100100 (overflow, número de bits > N)

EJEMPLO B: Codificar en complemento a 2 el número negativo –65, siendo N=8.


Conversión a binario 1000001 (Nº bits < N)
Completamos con ceros 01000001
Complemento a 1 10111110
Complemento a 2 10111110
+1
10111111 (codificación correcta)

EJEMPLO C: Codificar en complemento a 2 el número negativo –192, siendo N=8.


Conversión a binario 11000000 (Nº bits = N)
Complemento a 1 00111111
Complemento a 2 00111111
+1
01000000 (overflow, bit de signo positivo)

EJEMPLO C: Codificar en complemento a 2 el número negativo –128, siendo N=8.


Conversión a binario 10000000 (Nº bits = N)
Complemento a 1 01111111
Complemento a 2 01111111
+1 (Codificación correcta y que se corresponde
10000000 con el mayor nº negativo posible para N= 8)

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 6


Introducción a los sistemas informáticos.

Ventaja Importante el cero tiene una única representación. Veámosla para 8 bits:
Número 0  0 0 0 0 0 0 0 0
Número -0 Primer paso: 11111111
Segundo paso: 11111111
Tercer paso + 1
1 00000000 Se desprecia el 1 acarreo

Por esta razón, el rango de representación de este método es asimétrico, y como la represen-
tación del cero la tomamos de los positivos, estos tendrán un número menos:
-2N-1 a +2N-1 - 1

- Para 8 bits: -128 a +127


- Para 16 bits: -32.768 a 32.767
- Para 32 bits: -[Link] a [Link]

Ejemplo sencillo para comprobar todas las combinaciones binarias correspondientes a


los números positivos y negativos con su signo codificados en Complemento a 2. Para
ello supondremos N = 4 bits
Deducciones con lo aprendido hasta el momento:
 Con 4 bits dispondremos de 24 combinaciones binarias que irían desde el 0000 hasta el
1111. Esto es, 16 cantidades numéricas cuyos valores decimales sin signo son: 0, 1, 2, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 y 15
 Al utilizar la codificación Complemento a 2, la correspondencia entre las cantidades con
signo representadas y cada una de las 16 combinaciones binarias posibles sería, en este
caso, la siguiente:
0000 (+0) 0 1000 (-8) 8
0001 (+1) 1 1001 (-7) 9
0010 (+2) 2 1010 (-6) 10
0011 (+3) 3 1011 (-5) 11
0100 (+4) 4 1100 (-4) 12
0101 (+5) 5 1101 (-3) 13
0110 (+6) 6 1110 (-2) 14
0111 (+7) 7 1111 (-1) 15
 Al igual que en los casos anteriores (Complemento a 1 y Signo y Magnitud), la combi-
nación binaria de los números positivos es igual. Sin embargo, la asignación binaria de
los números negativos es distinta y, en este caso, empiezan por el -1 no por el -0. Por
tanto tenemos un valor más alto en los negativos que en los positivos.
 En este caso, el rango de valores representables es distinto a los casos anteriores, siendo
de -8 a +7:
(- 2 4-1 ) a (+ 2 4-1 - 1)

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 7


Introducción a los sistemas informáticos.

CURIOSIDAD: OPERACIONES BINARIAS EN COMPLEMENTO A 2.

La forma de operar aritméticamente es igual que en complemento a 1, pero en este caso el


ordenador no necesita hacer ninguna operación con el último acarreo en caso de existir, por lo
tanto se simplifica su funcionamiento.

Ejemplo: Sumar los números 10 y -3 en complemento a 2 siendo N=8 bits.

0 0 0 0 1 0 1 0 10
+ 1 1 1 1 1 1 0 1 + (-3)
El acarreo 1 0 0 0 0 0 1 1 1 7
se desprecia

Ejemplo: El mismo ejemplo anterior pero sumados al revés -3 más 10:


1 1 1 1 1 1 0 1 (-3)
+ 0 0 0 0 1 0 1 0 + 10
1 0 0 0 0 0 1 1 1 7

Ejemplo: Positivo menor que negativo


1 1 1 1 0 1 1 0 (-10)
+ 0 0 0 0 0 0 1 1 + 3
1 1 1 1 1 0 0 1 (–7)en C-2 OK

1.1.4. Codificación en Exceso o Desplazado (2 N-1-1).

En este sistema de codificación de los números enteros se resuelve el problema de tener dos
configuraciones distintas para el cero de la siguiente forma:
 De todas las combinaciones posibles con N bits (2N nos daría todas las combinaciones
posibles con N bits y se corresponden con los valores absolutos –sin signo-) se selecciona
como valor cero el valor situado en la mitad de la lista. Para elegir la combinación bina-
ria que representará el valor cero nos podemos encontrar con dos implementaciones dis-
tintas según si se desea que el cero forme parte de los números positivos o por el contrario,
formen parte de los negativos, siendo el rango de representación distinto en cada caso. Por
otro lado tenemos que el valor de esta combinación binaria del cero representa el valor de
exceso o desplazado necesario para calcular la combinación binaria de los números con
signo que deseemos representar.
 Los números negativos se corresponderán con todas aquellas combinaciones binarias infe-
riores a la combinación binaria que representa el cero.
 los números positivos se corresponderán con todas aquellas combinaciones binarias supe-
riores a la combinación binaria que representa el cero.
 Así pues, en este sistema de codificación y a diferencia con los sistemas vistos anterior-
mente, vamos a observar que los números negativos empezaran por 0 y los positivos por 1.

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 8


Introducción a los sistemas informáticos.

Para terminar de entender este sistema de codificación lo mejor es verlo con un ejemplo sen-
cillo, para ello utilizaremos N=3 bits.:
 Con tres bits tenemos 8 combinaciones binarias posibles 23 cuyos valores absolutos (sin
signo) irían de 0 a 7:
Combinaciones Valor absoluto Valor codificado
binarias (sin signo) (con signo)
000 0 -3
001 1 -2
010 2 -1
011 3 0
100 4 +1
101 5 +2
110 6 +3
111 7 +4
 Para calcular el valor absoluto correspondiente al valor de "exceso" o "desplazado" y
que se corresponderá con el valor codificado cero, en este caso, hemos utilizamos la
fórmula 23-1 -1 (esto es, 22 -1 = 4 -1 = 3). En este caso, por tanto, el cero formaría parte
de los números negativos (su combinación binaria empieza por cero). Este será el criterio
que utilizaremos en estos ejercicios y que también utilizaremos en la codificación del ex-
ponente en la codificación de coma flotante según el estándar IEEE754. Así pues, en este
caso, el rango de representación sería:

-2N-1 + 1 hasta + 2N-1

Para 8 bits: -127 <= x <= +128


Para 16 bits: -32767 <= x <= 32768
Para 32 bits: -2147483648 <= x <= 2147483647
Otras implementaciones pueden podrían considerar el valor de exceso o desplazado el
obtenido por la formula 2N-1. En ese caso el cero formaría parte de los positivos y el
rango de representación sería:
-2N-1 hasta + 2N-1- 1

 El procedimiento para codificar en exceso a 2N-1 -1 una cantidad en decimal con signo
seguiremos los siguientes pasos:
1º. Calcular el valor del exceso (sesgo o desplazado) correspondiente a N bits mediante la
fórmula 2N-1 -1
2º. Calcular el valor absoluto en decimal sumando al valor de exceso el valor decimal
con su signo:
(Valor exceso) + (valor decimal con su signo) = Valor absoluto en decimal

IMPORTANTE: El valor obtenido debe estar comprendido en el rango de los valores


absolutos correspondiente a N bits. Si el valor fuese inferior o superior se estaría pro-
duciendo un error de OVERFLOW (desbordamiento).
Por ejemplo, si N=3 bits estamos viendo que sus valores absolutos oscilan de 0 a 7 y
su valor de exceso es 3. Si quisiésemos representar la cantidad -5, nos daría 3 + (-5) =
-2 (menor que 0, error de overflow). Efectivamente, vemos que la cantidad -5 está
fuera del rango de representación de N=3 bits que va de -3 hasta +4.

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 9


Introducción a los sistemas informáticos.

3º. Convertir el valor absoluto obtenido a su correspondiente combinación binaria. Re-


cordar que hay que completar los N bits utilizados en la codificación, por tanto, en ca-
so necesario, completar con ceros a la izquierda hasta alcanzar las N posiciones esta-
blecidas.

Ejemplos con N=8 bits (valor de exceso = 27-1 = 127)


a) Tanto para el +0 como para el -0 su valor absoluto sería el mismo (igual al valor de exce-
so) y su combinación binaria sería única:
127 + (+0) = 127  0111 1111
127 + (-0) = 127  0111 1111
b) La codificación de +10 sería:
127 + (+10) = 137  1000 1001
c) La codificación de -10 sería:
127 + (-10) = 117  0111 0101

1.1.5. Decimal Codificado en Binario (BCD) y variaciones.

Para representar los dígitos decimales (0 –9) según una secuencia binaria han existido y exis-
ten distintos sistemas de codificación. Entre otros mencionaremos a: BCD, Aiken, código
5421, Jhonson y Gray.

Algunos de ellos tienen una particularidad especial (distancia Hamming 1, códigos progresi-
vos). Por otro lado, otros sistemas de codificación se basan en BCD, tales como Decimal
Empaquetado y Decimal Desempaquetado.

AIKEN
Decimal BCD 5421 JHONSON GRAY
2421
0 0000 0000 0000 00000 0000
1 0001 0001 0001 00001 0001
2 0010 0010 0010 00011 0011
3 0011 0011 0011 00111 0010
4 0100 0100 0100 01111 0110
5 0101 1011 1000 11111 0111
6 0110 1100 1001 11110 0101
7 0111 1101 1010 11100 0100
8 1000 1110 1011 11000 1100
9 1001 1111 1100 10000 1101

En BCD cada dígito decimal se representa por 4 bits o dígitos binarios (cuarteto o nibble)
obtenidos de su conversión al binario según el TFN.

Los otros códigos representan los dígitos decimales siguiendo una combinación diferente en
cada caso.
En el caso de los códigos 5421 y AIKEN podemos observar que ambos códigos tienen un
inconveniente importante y es que algunos de los dígitos decimales admiten más de una com-
binación diferente, (ej. C. Aiken 6=1100 o 0110; c. 5421, 6=1001 o 0110) aunque en realidad

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 10


Introducción a los sistemas informáticos.

la ambigüedad se salva especificando que los primeros 5 dígitos (0-4) empiezan por 0, y los 5
siguientes (5-9) por 1.
Por otro lado, los códigos Jhonson y Gray tienen la particularidad de tener una distancia
Hamming 1 y tratarse de códigos progresivos.
Distancia de Hamming. Es el número de dígitos en que difieren dos palabras de código.
Códigos progresivos. Son códigos en los que las combinaciones correspondientes a números
decimales consecutivos son adyacentes, es decir, se diferencian sólo en un bit (distancia
Hamming = 1).
Códigos progresivos cíclicos. Son códigos progresivos en los que la última combinación es
adyacente a la primera. Ejemplos de este tipo de codificaciones es el Jhonson (cuando repre-
senta únicamente los dígitos decimales, tal como vemos en tabla) y el código Gray (cuando
generamos todas las combinaciones posibles con N bits, en la tabla sólo tenemos la corres-
pondencia con los dígitos decimales y no podemos observar esta característica.
El código GRAY debido a estas particularidades es un código muy utilizado en dispositivos
mecánicos, en los ADC (conversores de digital a binario) y en robótica. El error medio en la
transmisión es menor cuando se hace uso del código Gray. Vamos a ver a continuación como
se generan la secuencia binaria en el códigos Gray.
Algoritmo del código Gray:
 El código Gray de 1 bits (N=1) es 0, 1
 El código Gray de N bits es:
Un código Gray de N-1 bits antecedidos de un 0, seguido de,
Un código Gray de N-1 bits escritos en orden inverso, antecedidos de un 1.
Ejemplos:
Códigos GRAY
N=1 N=2 N=3
0 00 000
1 01 001
11 011
10 010
110
111
101
100

A. Decimal desempaquetado

En este sistema un número se almacena en un byte por cada una de sus cifras. Cada byte lleva
en su cuarteto de la izquierda cuatro unos (F en hexadecimal) denominados bits de zona, y en
el de la derecha la cifra en BCD (decimal codificado en binario) denominados bits de dígito.
El cuarteto de la izquierda de la última cifra representa el signo, conteniendo 1100 para el + y
1101 para el - (C y D en hexadecimal respectivamente).

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 11


Introducción a los sistemas informáticos.

1111 F .... + 1100 C


- 1101 D
ZONA Digito BCD SIGNO Digito BCD

Ejemplo: Representar los números 1992 y -1992

1992: signo +

1111 0001 1111 1001 1111 1001 1100 0010 En hexadecimal F1 F9 F9 C2


1 9 9 2

-1992: signo -

1111 0001 1111 1001 1111 1001 1101 0010 En hexadecimal F1 F9 F9 D2


1 9 9 2

B. Decimal Empaquetado

Se representa cada dígito en un cuarteto (sin bits de zona), salvo el primero por la derecha que
lleva el signo con los mismos valores (1100 para el + y 1101 para el -).

.... + 1100 C
- 1101 D
Digito BCD Digito BCD Digito BCD SIGNO

Ejemplo: Representar los números 1992 y –1992

1992: signo +

0000 0001 1001 1001 0010 1100 En hexadecimal 01 99 2C


1 9 9 2
-1992: signo -

0000 0001 1001 1001 0010 1101 En hexadecimal 01 99 2D


1 9 9 2

1.2. COMA FLOTANTE

La coma flotante surge de la necesidad de representar números reales con un rango de repre-
sentación mayor al que nos ofrece la representación en coma fija y posibilitar a la computado-
ra el tratamiento de números muy grandes y muy pequeños.

En un sistema informático, será necesario representar números grandes como la constante de


Avogadro (6,022 1023), serian necesarias 80 cifras en código binario, así como números muy
pequeños como la carga del electrón (1.602 10-19), que en binario natural serian necesarias
más de 63 cifras para tener un valor significativo.

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 12


Introducción a los sistemas informáticos.

En su representación se utiliza la notación matemática exponencial, según la cual:

Nº = MANTISA * BASEEXPONENTE

Un número en esta notación tiene infinitas representaciones, de las que se toma la denomina-
da exponencial normalizada, que consiste en que la mantisa no tiene parte entera y el primer
dígito a la derecha de la coma es significativo (distinto de cero), salvo en la representación del
número 0. El exponente indica donde se sitúa la coma decimal, por eso se habla de coma flo-
tante.

Ejemplos:

a) La representación del número 844,4 (base 10) en notación exponencial normalizada


sería 0,8444 * 103
b) La representación del número 0,0000672 (base 10) en notación exponencial normali-
zada sería 0,672 * 10-4

El rango de representación en este tipo de formato variará de la siguiente forma:

-MinMantisa*B-MaxExp +MinMantisa*B-MaxExp

-MaxMantisa*B+MaxExp +MaxMantisa*B+MaxExp
0

 El cero se representa por todo ceros.


 El rango para los números negativos irá desde un número negativo muy pequeño que se
aproxime al cero: -0,000000......1 hasta un número negativo muy grande: - 9999...999
 El rango para los números positivos irá desde un número positivo muy pequeño que se
aproxime al cero: +0,000000......1 hasta un número positivo muy grande: + 9999...999

El uso de la coma flotante es especialmente interesante en informática pues permite trabajar


con números decimales en rangos amplios, aunque también se usa el truncado de decimales.
La forma de almacenar números en punto flotante está especificada en la norma IEEE 754.
Básicamente un número en coma flotante consta de 3 partes:
Signo: Expresa el signo del número.
0  Para números positivos
1  Para números negativos
Exponente: Representa la orden de magnitud del significando y esta expresado en ex-
ceso a ( 2N-1-1), ya que el exponente puede ser positivo y negativo. En este caso, el valor
de N será igual al número de bits dedicados a almacenar el exponente y lo denominare-
mos BE (Bits Exponente).
Mantisa (o significando): dígitos significativos del número. El tamaño máximo de este
campo, usualmente fijo y limitado, determina la precisión de la representación. Este

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 13


Introducción a los sistemas informáticos.

campo está normalizado, pero como en binario la primera cifra significativa siempre
será un 1, en lugar de tomar "0," como punto de partida, se toma "1," de forma que se
ahorra el almacenamiento de un bit el cual estará oculto (esta técnica en la que el 1, está
implícito en la codificación se denomina de "bit fantasma". La mantisa está codificada
en Módulo y Signo, así que tendremos dos configuraciones para el cero.

Según el número de bits dedicados a almacenar el exponente y la mantisa, en la especificación


IEEE754 podemos encontrar cuatro precisiones diferentes:

 Coma flotante de simple precisión (32 bits en total)


 Como flotante de simple precisión extendida (44 o más bits)
 Coma flotante de doble precisión (64 bits)
 Coma flotante de doble precisión extendida (80 bits)
1.2.1. Coma Flotante Simple Precisión (4 bytes)

Utiliza 4 bytes (32 bits) para la representación de los números reales. El primer bit de la iz-
quierda representará el signo (que será 0 para +, 1 para -); a continuación, 8 bits para el ex-
ponente, y finalmente 23 bits para el significando o mantisa (BM, Bits Mantisa):

Signo Exponente Mantisa o Significando


(1) (8) (23)
31 30 23 22 0
Exceso o Desplazado= +127 RANGO: 3.4e-038 .. 3.4e+038
ERROR DE TRUNCAMIENTO: 21-BM = 21-23= 2-22 = 0.000000238 = 2,38 x 10-7
PRECISIÓN: 7 dígitos decimales

EJEMPLO 1: Codificar en coma flotante de simple precisión el valor +12,25

1º. Bit de Signo: positivo valor 0


2º. Convertir a Binario: 12,25 = 1100,01
3º. Normalización: 1100,01 = 1,10001 * 2+3
4º. Codificar el Exponente en exceso 2BE – 1 -1
(en simple precisión el valor de exceso o "desplazado" será siempre +127 ya que tene-
mos 8 bits para almacenar el exponente (BE, bits exponente), por tanto, 28 – 1 -1 = 27 -1
= 128 - 1 = 127).
127 + (+3) = 130 = 1000 0010
5º. Codificar Mantisa (con el uno oculto, técnica del "bit fantasma", 23 bits).
100 0100 0000 0000 0000 0000
6º. Representación final sería:

0100 0001 0100 0100 0000 0000 0000 0000


41 44 00 00

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 14


Introducción a los sistemas informáticos.

EJEMPLO 2: Representar en coma flotante simple precisión el valor -324,8125

1º. Bit de Signo: negativo valor 1


2º. Convertir a Binario: -324,8125 = -101000100,1101 (recordar que es negativo)
3º. Normalización: -1,010001001101 * 2+8
4º. Codificar el Exponente en exceso 2BE – 1 -1--> 127 + (+8) = 135 = 1000 0111
5º. Mantisa (23 bits): 010 0010 0110 1000 0000 0000.
6º. Representación final sería:

1100 0011 1010 0010 0110 1000 0000 0000


C3 A2 68 00

EJEMPLO 3: Representar en coma flotante de simple precisión el valor +37,28.

1º. Bit de Signo: positivo valor 0


2º. Convertir a Binario: 100101,010001
3º. Normalizar: 1,00101010001* 2+5
4º. Codificar el Exponente en exceso 2BE – 1 -1--> 127 + (+5) = 132 = 1000 0100
5º. Mantisa (23 bits): 001 0101 0001 0000 0000 0000
6º. Representación final sería:

0100 0010 0001 010 1 0001 0000 0000 0000


42 15 10 00
1.2.2. Coma Flotante de Doble Precisión (8 bytes)
En este caso se utilizan 64 bits para la representación del número real:

Signo Exponente Mantisa o Significando


(1) (11) (52)
63 62 52 51 0
Exceso o Desplazado= +1024 RANGO: 1.7e-308 ... 1.7e+308
ERROR DE TRUNCAMIENTO: 21-BM = 21-52= 2-51 = 4,4408 x 10-16
PRECISIÓN: 15 dígitos decimales

1.2.3. Operaciones en coma flotante


Las operaciones con números en representación en coma flotante, es mucho más complicada, por eso
los procesadores necesitan de unidades especiales para trabajar con ellos (FPU = Float Point Unit).
Por ejemplo en la suma (o resta) será necesario:

 Extraer signos, exponentes y magnitudes.


 Tratar operandos especiales (por ejemplo, alguno de ellos a cero)
 Desplazar la mantisa del número con exponente más pequeño a la derecha |e1-e2| bits
 Fijar el exponente del resultado al máximo de los exponentes

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 15


Introducción a los sistemas informáticos.

 Si la operación es suma y los signos son iguales, o si la operación es resta y los signos son
diferentes, sumar las mantisas. En otro caso restarlas.
 Detectar overflow de la mantisa.
 Normalizar la mantisa, desplazándola a la derecha o a la izquierda hasta que el dígito más
significativo esté delante de la coma decimal.
 Redondear el resultado y renormalizar la mantisa si es necesario.
 Corregir el exponente en función de los desplazamientos realizados sobre la mantisa.
 Detectar overflow o underflow del exponente.

Convertidor automático de formato que permite introducir un número en formato decimal, y


obtener el aspecto de su almacenamiento binario (en simple y doble precisión) según el
Estándar IEEE 754
[Link]

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 16


Introducción a los sistemas informáticos.

2. SISTEMAS DE CÓDIFICACIÓN ALFANUMÉRICA.

2.1. INTRODUCCIÓN.

Utilizando únicamente ceros y unos, hemos visto como podemos representar en el ordenador
información numérica con la que el ordenador (el microprocesador) es capaz de operar con

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 17


Introducción a los sistemas informáticos.

ellos (hacer cálculos aritméticos). Sin embargo, también necesitamos representar otra serie de
símbolos (letras mayúsculas y minúsculas; caracteres de puntuación; etc).

Para ello se utilizan los códigos alfanuméricos que, básicamente, se trata de tablas que con-
tienen el conjunto de caracteres que necesitamos representar y a los que se les hace corres-
ponder una combinación de bits siguiendo algún criterio. Esta relación carácter-bits debe ser
unívoca, de forma que no haya ambigüedades. Así pues, los códigos alfanuméricos permiten
traducir la información o los datos que nosotros entendemos a una representación que la
máquina puede interpretar y procesar. Los fabricante de componentes de E/S podrían asignar
una combinación diferente a un mismo carácter o símbolo de origen; sin embargo, esto no
sería nada positivo en un mercado como el informático. Por eso se tiende a la estandarización
de códigos, que ha llevado a la universalización de unos pocos códigos de E/S, como el
EBCDIC, ASCII y Unicode. Antes de seguir aclararemos algunos términos o definiciones:

 Carácter.
Componente más pequeño de un lenguaje escrito y que además posee un valor semántico
(nota: la semántica estudia el significado de los signos lingüísticos). Ejemplos: “1”, “.”,
“A” “纯”.
 Conjunto de caracteres.
Es un grupo de caracteres sin ningún valor numérico asociado. Ejemplos: el alfabeto Es-
pañol o el Cirílico (usado en Rusia y Bulgaria).
 Codificación de caracteres. (Character encoding)
Procedimiento por el que asociamos un determinado carácter o símbolo con un valor es-
calar (número) concreto. En este contexto, a dichos números se les denomina código (en
Unicode reciben el nombre de Punto de Código – Code Point- ) y deben ser:
o Números enteros
o No negativos
o Estar dentro de un conjunto finito.
 Conjunto de caracteres codificados.
Es un grupo de caracteres asociados a un valor escalar. Ejemplo: la letra “A” mayúscula,
que según la tabla ASCII tiene el valor decimal 65 (hexadecimal 41, binario 0100 0001).

2.2. EVOLUCIÓN HISTÓRICA: ASCII, EBCDIC, UNICODE.

A lo largo de la historia de la informática, se han ido utilizando distintos "Sistemas de codifi-


cación alfanumérica", los cuales se han distinguido por el número de bits que utilizaban y por
la disposición de los caracteres a representar.

La evolución de los distintos sistemas de codificación alfanumérica ha venido determinada


por distintos "contextos de época":

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 18


Introducción a los sistemas informáticos.

1ª Época (Antes de 1960) BAUDOT, FIELDATA, BCDIC

El contexto de esta época es el siguiente:


 Pocos ordenadores en el mundo, los más destacados ubicados en [Link].
 Entornos cerrados y todos de habla inglesa.
 Cada ordenador podía tener su propio sistema de codificación. Códigos de 5, 6 bits (Bau-
dot, Fieldata, BCDIC, etc)

FIELDATA De 6 bits. Sólo podía representar un conjunto de 26 caracteres o códigos, esto


es, 64 en total. En esos tiempos, el BYTE era igual a 6 bits y no 8.
BCDIC De 6 bits (Binary Coded Decimal Interchange Code). Realmente es un código
basado en BCD y utilizado en los equipos de IBM

2ª Época (Años 1960-70) US-ASCII, ISO 646, EBCDIC

El contexto de esta época es el siguiente:


 Surge la necesidad de intercambiar información entre los ordenadores anteriores.
 Todavía es muy limitado el intercambio con ordenadores de otros países y lenguas.
 Se necesita una codificación estándar para el intercambio de información entre dichos
ordenadores, así surgen los códigos de 7 bits: US-ASCII, ISO 646 y EBCDIC .

US-ASCII (7 bits + 1 bit de control de paridad)

* | 0 1 2 3 4 5 6 7 8 9 A B C D E F
--------------------------------------------------------------
0 | NUL SOH STX ETX EOT ENQ ACK BEL BS TAB LF VT FF CR SO SI
1 | DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2 | ! " # $ % & ' ( ) * + , - . /
3 | 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 | @ A B C D E F G H I J K L M N O
5 | P Q R S T U V W X Y Z [ \ ] ^ _
6 | ` a b c d e f g h i j k l m n o
7 | p q r s t u v w x y z { | } ~ DEL

- En esta 1ª versión de ASCII de 7 bits, se definieron 128 códigos (27) del 0 al 127. Estos
códigos han permanecido fijos en las sucesivas modificaciones posteriores del estándar.
- De los 8 bits que se transmitían, sólo se emplearon los de menor peso para establecer los
códigos y el de mayor peso se reservó para control de transmisión (paridad): Pxxx xxxx.
Por tanto, esos 128 códigos empiezan por cero en el actual código ASCII de 8 bits.
- El conjunto de caracteres codificado los dividieron en 4 grupos y sólo contenían los ca-
racteres alfabéticos y símbolos utilizados por los americanos
Grupo 1 (00-1F) Códigos de control, no imprimibles. El 00 es el código nulo.
Grupo 2 (20-3F) Signos especiales, de puntuación y dígitos numéricos. Notar que
el espacio en blanco es el 20 (32(10).

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 19


Introducción a los sistemas informáticos.

Grupo 3 (40-5F) Básicamente las letras MAYÚSCULAS. Notar que no está la Ñ.


Grupo 4 (60-7F) Básicamente las letras minúsculas. Notar que no está la ñ.

Los códigos de control tienen asignadas unas siglas que son las iniciales inglesas de la fun-
ción a que han sido atribuidas por el organismo de estandarización europeo CCITT (Comité
Consultivo Internacional de Telecomunicaciones y Telefonía). Algunos de estos caracteres
son:
ACK (Acknowledge) Acuse de recepción: Carácter de transmisión que es emitido por el dispositivo receptor para
indicar al emisor que los datos han sido bien recibidos.
BEL (Bell) Campana: Carácter utilizado cuando se tiene necesidad de llamar la atención del operador
del terminal.
NUL (Null) Nulo: Carácter nulo que puede estar incluido en un conjunto de caracteres y que puede ser
olvidado sin que la información sea efectuada.
SP (space) Espacio: Carácter blanco que no produce impresión. Se utiliza para separar textos.
VT (Vertical Tabulation) Tabulación vertical: Produce el que la cabez de impresión vuelva sobre el anterior carácter
impreso.
BS (BackSpace) Vuelta a posición anerior: Produce el que la cabeza de impresión vuelva sobre el anterior
carácter impreso.
CAN (Cancel) Cancelación: Los caracteres a los que va asociado no deben tomarse en cuenta.
CR (Carriage Return) Retorno de carro: El carro vueve a la primera posición de la línea.
LF (Line Feed) Salto de línea: El carro salta una línea, posicionandose el cursor al inicio de ella.
FF (Form Feed) Salto de primera línea: El carro salta una línea, posicionándose el cursor al inico de ella.
SYN (Synchronous Idle) Sincronización: Cáracter de sinronización, utilizado para que el receptor se ponga a la escu-
cha y sincronice su reloj.
STX (Start of Text) Principo de Texto: Precede a una secuencia de caractere, denominada texto y son datos.
ETX (End of Text) Fin de Texto: Finaliza un texto que va precedido por STX.
ENQ (Enquiry) Petición: petición de respuesta ala identificación de una estación o al estado.
EOT (End of Transmission) Fin de comunicación: Indica el fin de la transmisión de uno o varios textos.

ISO 646 Estandarización del US-ASCII de 7 bits. Dado que [Link]. fue el principal ven-
dedor de computadoras en todo el mundo en aquellos tiempos, el código US-
ASCII fue asumido por la mayoría de los fabricantes como el código estándar in-
ternacional (sólo IBM se resistió). Así pues, se hizo necesaria la adaptación de
dicho código a otros lenguajes provenientes del Latín, en particular los lenguajes
del Este de Europa. De este trabajo se encargo la International Organization for
Standardization (ISO) dando como resultado la Recomendación ISO 646 en
1967. Se trata de un código ASCII básico excepto en 10 posiciones de carácter
que se dejaron abiertas para las "variantes nacionales".

EBCDIC (Extended BCD for Information Communication), código empleado por IBM en
sus equipos (va por libre, es el líder del mercado). Lo estrena en sus sistemas
S/360 en 1964. La idea básica consistía en anteponer al BCD una zona de 4 bits
que se mantienen a 1111 para los dígitos decimales y toman combinaciones distin-
tas para el resto del alfabeto.

3ª Época (Años 1980 - 90) ASCII-8, ISO 8859

El contexto de esta época es el siguiente:

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 20


Introducción a los sistemas informáticos.

 Con la llegada de los IBM-PC llegó también la necesidad de ampliar el conjunto de carac-
teres ASCII dado que los ordenadores se extendieron por todo el mundo y no todo el
mundo hablaba inglés.
 Es importante adaptar los códigos a todas las lenguas, para que puedan utilizar sus pro-
pios caracteres.
 El código ASCII-8 (o simplemente ASCII) se impone como estándar. Se utilizan los 8
bits para representar los códigos de caracteres obviando el bit de paridad.
 La nueva normalización aparecen bajo las especificaciones ISO 8859. En ellas, los prime-
ros 128 códigos son los del US-ASCII/ISO 646, y los nuevos 128 códigos disponibles al
utilizar el octavo bit, se establecen como sigue:

Part 1: Latin alphabet No. 1 (Revised 1998) ISO 8859-1


Character sets of Western European languages (this is the famous "Latin-1")
Part 2: Latin alphabet No. 2 ISO 8859-2
Character sets of Eastern European languages (Slavic, Albanian, Hungarian, Romanian)
Part 3: Latin alphabet No. 3 ISO 8859-3
Character sets of Southern European languages (Maltese) plus Esperanto
Part 4: Latin alphabet No. 4 (1998) ISO 8859-4
Northern European languages
Part 5: Latin/Cyrillic alphabet ISO 8859-5
Part 6: Latin/Arabic alphabet ISO 8859-6
Part 7: Latin/Greek alphabet ISO 8859-7
Part 8: Latin/Hebrew alphabet ISO 8859-8
Part 9: Latin alphabet No. 5 ISO 8859-9
Latin character set used for modern Turkish
Part 10: Latin alphabet No. 6 (1998) ISO 8859-10
Icelandic, Nordic, and Baltic character sets
Part 13 (DIS) Latin alphabet No. 7 ISO 8859-13
Part 14 (DIS) Latin alphabet No. 8 (Celtic) ISO 8859-14

ISO 8859-1 (Latin 1) define la codificación del alfabeto latino, incluyendo los diacríticos
(como letras acentuadas Ñ, Ç ) y letras especiales ((ß, Ø) necesarios para las lenguas:
afrikaans escocés gaélico neerlandés
alemán español gallego noruego
aragonés feroés inglés portugués
catalán, finés islandés sueco
danés francés italiano y vasco.

El siguiente gráfico nos muestra una tabla ASCII-8 muy práctica ya que de una forma muy
cómoda tenemos los tres valores (decimal, hexadecimal y, por consiguiente, también binario)
de cada uno de los 256 caracteres, símbolos y control contemplados.
Por ejemplo, el carácter "ESPACIO EN BLANCO" tiene el valor decimal 32, el valor hexa-
decimal 20 (fila 2, columna 0), y por consiguiente, su valor binario es 0010 0000. El código 0
es el carácter NULO y el 255 es el carácter FIN DE FICHERO (EOF)

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 21


Introducción a los sistemas informáticos.

4ª Época (Años 1990 en adelante) UNICODE/UTF-8

El contexto de esta época es el siguiente:


 Se populariza Internet y todos los ordenadores del mundo están intercomunicados.
 Problemas.

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 22


Introducción a los sistemas informáticos.

Buena parte de los codificadores de caracteres tradicionales comparten un problema


común: permite procesamientos informáticos bilingües (generalmente usando carac-
teres latinos y del idioma común), pero no multilingües (procesamiento informático
de idiomas arbitrarios mezclados entre ellos).
 Soluciones:
- Una posible solución, nada práctica, sería tener instalados en nuestros sistemas todos
los sistemas de codificación para asegurar el correcto intercambio de información.
- Una solución más definitiva sería establecer un estándar que reúna todos los caracte-
res de todos los alfabetos del mundo de forma que todos los ordenadores sean capa-
ces de representar dichos caracteres cargando automáticamente los códigos que sean
necesarios.
 A finales de los años 80, dos organismos estaban desarrollando de forma paralela un
Código de Caracteres Unificado:
Proyecto ISO 10646 De la Organización Internacional de Estandarización
Proyecto UNICODE Organizado por un consorcio de fabricantes de software.

Cuando se dan cuenta que están trabajando sobre lo mismo deciden unir sus fuerzas pero
deciden hacer sus publicaciones por separado. Así pues existe una relación entre ambas
publicaciones:
1991 Unicode 1.0 (en ese año se publicó el primer estándar Unicode
(ISBN 0321185781)
1993 Unicode 1.1 es el ISO 10646-1:1993
1996 Unicode 2.0
1998 Unicode 2.1
1999 Unicode 3.0 Cubría 16 bits de la Plana Básica Multilingüe del ISO
10646-1:2000
2001 Unicode 3.1 Introduce Planas suplementarias procedentes del ISO
10646-2:2001
2002 Unicode 3.2
2003 Unicode 4.0 es el ISO 10646:2003
2005 Unicode 4.1
2006 Unicode 5.0
2008 Unicode 5.1.0
2009 Unicode 5.2.0 (Diciembre de 2009)
……………………
En estos momentos (Octubre 2016), la última versión disponible en pdf en la página oficial
es Unicode 9.0.0 (21 junio 2016). El pdf tiene 1036 páginas (13MB):

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 23


Introducción a los sistemas informáticos.

Este estándar es mantenido por el Unicode Technical Committee (UTC), integrado en el


Unicode Consortium, del que forman parte con distinto grado de implicación empresas co-
mo: Microsoft, Apple, Adobe, IBM, Oracle, SAP, Google o Yahoo, instituciones como la
Universidad de Berkeley, y profesionales y académicos a título individual.

El Unicode Consortium mantiene estrecha relación con ISO/IEC, con la que mantiene desde
1991 el acuerdo de sincronizar sus estándares que contienen los mismos caracteres y puntos
de código.

Es interesante echar una mirada a los apartados:


2.2 Unicode Design Principles ( subapartado Characters, Not Glyphs);
2.4 Code Points and Characters;
2.5 Encoding Forms;
Apéndice A Notational Conventions.

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 24


Introducción a los sistemas informáticos.

2.3. EL NUEVO SISTEMA DE CODIFICACIÓN ALFANUMÉRICA:


UNICODE + UTF-8

Unicode, el nuevo sistema de codificación de caracteres.

Unicode es el nuevo estándar de codificación de caracteres diseñado para facilitar el trata-


miento informático, transmisión y visualización de textos de múltiples lenguajes y disciplinas
técnicas, 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 otras informaciones necesarias para su uso correcto:
direccionalidad (si se escriben de izquierda a derecha o al revés), mayúsculas y otros atribu-
tos. Unicode trata los caracteres alfabéticos, ideográficos y símbolos de forma equivalente, lo
que significa que se pueden mezclar en un mismo texto sin la introducción de marcas o carac-
teres de control.

Unicode proporciona un número único para cada carácter:


 sin importar la plataforma (big-endian vs low-endian),
 sin importar el programa,
 sin importar el idioma.
Todos los idiomas actuales más importantes del mundo forman parte de Unicode, incluyen-
do su puntuación, símbolos especiales, símbolos matemáticos y técnicos, formas geométri-
cas, caracteres gráficos, modelos de Braille, etc.

El establecimiento de Unicode ha sido un ambicioso proyecto para reemplazar los esquemas


de codificación de caracteres existentes, muchos de los cuales como ya hemos comentado
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, sien-
do el dominante en la internacionalización y adaptación local del software informático. El
estándar ha sido implementado en un número considerable de tecnologías recientes, que in-
cluyen XML, Java y sistemas operativos modernos.

Unicode permite que un producto de software o sitio web específico se oriente a múltiples
plataformas, idiomas y países, sin necesidad de rediseñarlo. Además, permite que los datos se
trasladen a través de gran cantidad de sistemas distintos sin sufrir daños.

ACTIVIDAD:

Unicode es, desde 1991, la norma de codificación más universal en la actualidad. Es una
gran tabla que ya en el año 2006 asignaba un punto de código a más de 90.000 símbolos.
Averigua cuántos puntos de código cubre actualmente Unicode.

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 25


Introducción a los sistemas informáticos.

UTF-8 la nueva norma de transmisión de caracteres codificados

Una idea importante que tenemos que tener en la cabeza para entender este nuevo sistema de
codificación alfanumérica es que la solución ha venido de separar la norma de codificación
(UNICODE: elección de símbolos y asignación de un código fijo a cada símbolo) de la norma
de transmisión (UTF, UCS), usándose ambas en conjunto.

Así pues, con respecto a la norma de transmisión de puntos de código Unicode, se definie-
ron dos métodos de “mapeo” o de localización de caracteres:
 Método UTF-x (Unicode Transformation Format x) Formato de Transformación Unico-
de. (el número en los nombres "x" indican la cantidad de bits de cada carácter):
UTF-7 — norma relativamente poco popular de 7 bits, considerada obsoleta.
UTF-8 — norma de 8 bits de longitud variable
UTF-16 — norma de 16 bits de longitud variable.
UTF-32 — norma de 32 bits de longitud fija. Funcionalmente idéntica a UCS-4

 Método UCS-x (Universal Character Set x) Juego de Caracteres Universal. (el número
en los nombres "x" indican la cantidad de bytes de cada carácter):
UCS-2 — norma de 16 bits de longitud fija que solamente permite el "mapeo" o la
búsqueda en la Plana Básica Multilingüe.
UCS-4 — norma de 32 bits de longitud fija.

2.4. EJEMPLOS DE CODIFICACIÓN UNICODE/UTF-8

Ya sabemos que Unicode es el estándar que alberga todas las lenguas de la tierra, sin excep-
ciones, pero…

¿cómo representamos Unicode para no provocar problemas en nuestros sistemas?

La solución a este importante dilema vino de la mano de Ken Thompson (creador del sistema
operativo Unix) y Rob Pike. Estos señores inventaron la forma de codificar Unicode mien-
tras cenaban en un restaurant de Austin, Texas. Su genial solución se denominó UTF-8 (Uni-
code Transformation Format-8) y consiste en lo siguiente:

1. El bit más significativo de un carácter de byte-simple es siempre 0


2. Los bits más significativos del primer byte de una secuencia multi-byte determinan
la longitud de la secuencia: b110 para secuencias de dos bytes; b1110 para secuencias
de tres bytes, etc.
3. Los bytes restantes en una secuencia multi-byte tienen b10 como sus 2 bits más
significativos.

Aclaraciones sobre las convenciones de notación:


 0x21: quiere decir, número hexadecimal 21
 b110: quiere decir, número binario 110

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 26


Introducción a los sistemas informáticos.

De los puntos anteriores se genera la siguiente tabla de transformación:

Rangos UTF-8 secuencia de bytes


Unicode (Nº de bytes necesarios y codificación Binaria)
(Hexadecimal)
0000 0000
1 byte 0xxxxxxx
0000 007F
0000 0080
2 bytes 110xxxxx 10xxxxxx
0000 07FF
0000 0800
3 bytes 1110xxxx 10xxxxxx 10xxxxxx
0000 FFFF
0001 0000
4 bytes 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
0010 FFFF
0020 0000
5 bytes 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
03FF FFFF
0400 0000
6 bytes 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
7FFF FFFF

Ejemplo 1

El punto de código en Unicode del carácter H (Letra latina "H" mayúscula) es el U+0048. ¿Cuál
será la secuencia UTF-8 para transmitir/almacenar dicho carácter?

Solución:
Si observamos la tabla anterior, 0x48 es menor que 0x7F por lo tanto se encuentra en el ran-
go de la primera fila, lo cual significa que se transmitirá en un único byte con el bit más alto
puesto a 0.
El binario del hexadecimal 0x48 es b1001000, así pues, su codificación/transformación en
UTF-8 será b01001000, que coincide con binario usado para representar la misma "H"
según la tabla US-ASCII.
Importante: toda la tabla US-ASCII, es decir, aquellos primeros 127 caracteres son exacta-
mente los mismos en Unicode/UTF-8, tienen la misma representación escalar y de esta for-
ma se preserva la compatibilidad hacia atrás.

Ejemplo 2

El punto de código en Unicode del carácter a (Letra latina "a" minúscula) es el U+0061. ¿Cuál
será la secuencia UTF-8 para transmitir/almacenar dicho carácter?

Solución:

0x61 < 0x7F por lo tanto será codificado igualmente con un byte.
Binario : b1100001 Transformación en UTF-8: b01100001
También coincide con el juego de caracteres US-ASCII.

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 27


Introducción a los sistemas informáticos.

Ejemplo 3

El punto de código en Unicode del carácter Ñ (Letra latina "Ñ" mayúscula) es el U+00D1. ¿Cuál
será la secuencia UTF-8 para transmitir/almacenar dicho carácter?

Solución:

0xD1 > 0x7F, por lo tanto NO corresponde al primer rango


0xD1 < 0x7FF, rango correspondiente a la segunda fila. Según la tabla se utilizarán 2 bytes
para representar la "Ñ",
Binario de 0xD1 = b11010001
Transformación UTF-8: b11000011 b10010001,
Su equivalente hexadecimal es 0xc3 y 0x91 respectivamente.

Ejemplo 4

El punto de código en Unicode del carácter ᢅ (Letra mongolania " Ali Gali Baluda”) es el
U+1885. (Nota: para escribir este carácter en el editor de textos en Windows tenemos que
mantener pulsada la tecla Alt mientras escribimos el valor en decimal –en este caso 6277-del
valor Unicode del carácter en el teclado numérico, no el que está en la parte superior del te-
clado). ¿Cuál será la secuencia UTF-8 para transmitir/almacenar dicho carácter?

Solución:

0x1885 < 0xFFFF, por lo tanto el UTF-8 usará 3 bytes


Binario de 0x1885 = b1100010000101
Transformación en UTF-8= b11100001 b10100010 b10000101
Su equivalente en hexadecimal: 0xE1 0xA2 0x85.

Departamento de Informatica. Profesor: Aurelio Vidal Algarra 28

También podría gustarte