Sei sulla pagina 1di 22

Capítulo 2: Representación de la información en las computadoras. Página 1.

OBJETIVOS.
En este tema se verán los aspectos relacionados con la representación de la información en
el interior de las computadora, tanto la representación de información numérica como no
numérica. También se analizan los aspectos prácticos de los sistemas de numeración
matemáticos desde el punto de vista de su aplicación en Informática, ya que gran cantidad de
las transformaciones de información que tienen lugar en la computadora se fundamentan en los
sistemas de numeración.
Posteriormente se presentan los códigos de entrada/salida, con los que se traduce la
información externa a la computadora en forma comprensible por los elementos internos del
mismo. También se hacen unas consideraciones generales sobre los problemas que presentan
los errores producidos en la transmisión o almacenamiento de información, así como las
técnicas más básicas para la detección automática de estos errores. Por último se consideran
las transformaciones internas que tienen lugar en la computadora con los datos en código de
E/S para su adecuación en la realización de operaciones aritméticas.

1.- INTRODUCCION.
Una computadora es una máquina que procesa información. Más concretamente, la
ejecución de un programa implica la realización de unos tratamientos con unos datos, según
indica un conjunto ordenado de instrucciones, programa. Lógicamente, para que la
computadora ejecute un programa es necesario darle dos tipos de informaciones: las
instrucciones que forman el programa y los datos con los que debe operar ese programa.
Dos de los aspectos más importantes que se presentan en Informática relacionados con la
información son cómo «representarla» y cómo «registrarla» físicamente. Ambos problemas
están íntimamente relacionados y el primero de ellos es el objetivo fundamental de este
capítulo. El segundo objetivo se resuelve con «soportes de información» (discos y cintas
magnéticas, etc. ) que se estudiarán en el Capítulo 4.
Normalmente la información se da a la computadora en la forma usual escrita que utilizan
los seres humanos; es decir, con ayuda de un alfabeto o conjunto de símbolos, que
denominaremos caracteres.
Los caracteres que constituyen el alfabeto suelen agruparse en cinco categorías:
 Caracteres alfabéticos: son las letras mayúsculas y minúsculas del abecedario inglés:
A, B, C, D, E, ..., X, Y, Z, a, b, c, d, ..., x, y, z
 Caracteres numéricos: están constituidos por las diez cifras decimales:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
El cero suele marcarse con una raya inclinada (0) para evitar posibles confusiones con la
“o” mayúscula (O).
 Caracteres especiales. son los símbolos no incluidos en los grupos anteriores, entre otros
están los siguientes.
) ( , ./ ; : + Ñ ñ = ! ? "& > # < ]  [ SP
donde SP se representa el espacio en blanco, tal como el que separa dos palabras.
 Caracteres de control: representan órdenes de control, como el carácter indicador de fin
de línea o el carácter indicador de sincronización de una transmisión o de que se emita un
pitido en un terminal, etc. Muchos de los caracteres de control son generados e insertados
por el propio computadora.
 Caracteres gráficos: son símbolos o módulos con los que se pueden representar figuras (o
iconos) elementales.
En este tema nos restringiremos principalmente a los tres primeros tipos de caracteres, a
veces denominados caracteres-texto. A la agrupación de los dos primeros tipos se le denomina
conjunto de caracteres alfanuméricos.
Capítulo 2: Representación de la información en las computadoras. Página 2.

De la misma forma que una máquina de escribir no suele tener teclas para todos los
caracteres posibles, un sistema de procesamiento de la información (periférico o procesador)
puede no reconocer algunos caracteres (la ñ, por ejemplo). Toda comunicación con una
computadora convencional se realiza según los caracteres que admitan sus dispositivos de E/S,
y con ellos los usuarios tienen que expresar cualquier dato o instrucción. Es decir, toda
instrucción o dato se representará por un conjunto de caracteres tomados del alfabeto definido
en el sistema a utilizar. A continuación vamos a ver cómo se pueden representar los caracteres
en las computadoras.
El diseño de un sistema informático resulta más fácil, su realización menos compleja y su
funcionamiento muy fiable, si se utilizan sólo dos valores o estados posibles para las variables
físicas que representan los caracteres en los soportes de información o en el interior de la
computadora. Como ya se indicó, estos valores conceptualmente se representan por cero (0) y
uno (1), y corresponden a dos niveles de tensión (0 voltios y 3.5 voltios, por ejemplo), dos
valores de corriente, dos situaciones de una lámpara (apagada y encendida), etc. En otras
palabras, la información es retenida por medio de dos valores de una magnitud física (bit) que
podemos representar conceptualmente por ceros y unos.
Al tener que “traducir” toda la información suministrada a la computadora a ceros y unos,
es necesario establecer una correspondencia entre el conjunto de todos los caracteres
 = {A, B, C, D,..., Z, a, b,..., z, 0,1, 2, 3,..., 9, /, +, (, ),...)
y el conjunto binario
 = {0,1}n
es decir, es necesario hacer una codificación o representación de los elementos de un conjunto
(en este caso ) mediante los de otro conjunto () de forma tal que a cada elemento de  le
corresponda un elemento distinto de  (n bits).
Estos códigos de transformación se denominan códigos de entrada/salida (E/S) o códigos
externos y pueden definirse de forma arbitraria. No obstante existen códigos de E/S
normalizados que son utilizados por diferentes constructores de computadoras; estos códigos
los estudiaremos más adelante.
Las operaciones aritméticas con datos numéricos se suelen realizar en una representación
más adecuada para este objetivo que la obtenida con el código de E/S. Por ello en la propia
computadora se efectúa una transformación entre códigos binarios, obteniéndose una
representación fundamentada en el sistema de numeración en base 2, sistema que puede
considerarse como una codificación en binario más, pero que al ser una representación
numérica posicional es muy apta para realizar operaciones aritméticas.

2.- SISTEMAS DE NUMERACIÓN USUALES EN INFORMÁTICA.


Las computadoras suelen efectuar las operaciones aritméticas utilizando una representación
para los datos numéricos basada en el sistema de numeración base dos o sistema binario (que
llamaremos binario natural para no confundir con los códigos binario de E/S).
También se utilizan los sistemas de numeración, preferentemente el octal y hexadecimal,
para obtener códigos intermedios. Un número expresado en uno de estos dos códigos puede
transformarse directa y fácilmente a binario y viceversa. Con ellos se simplifica la transcripción
de números binarios y se está más próximo al sistema usado normalmente (sistema decimal),
por lo que a veces se utilizan como paso intermedio en las transformaciones de decimal a
binario y viceversa. Además, la realización electrónica de codificadores/decodificadores entre
binario y un código intermedio es mucho menos compleja que entre binario y decimal.
2.1. Representación posicional de los números.
Un sistema de numeración en base b utiliza para representar los números un alfabeto
compuesto por b símbolos o cifras. Así, todo número se expresa por un conjunto de cifras,
contribuyendo cada una de ellas con un valor que depende
Capítulo 2: Representación de la información en las computadoras. Página 3.

a) de la cifra en sí, y
b) de la posición que ocupe dentro del número.
En el sistema de numeración decimal, o sistema en base 10, que es el que más se usa,
b = 10 y el alfabeto está constituido por diez símbolos, llamados también cifras decimales:
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
y, por ejemplo, el número 5.367,24 se puede obtener como suma de:
5 000 + 300 + 60 + 7 + 0,2 + 0,04 = 5.367,24
es decir, se verifica que:
5.367,24 = 5 x 103 + 3 x 102 + 6 x 101 + 7 x 100 + 2 x 10-1 + 4 x 10-2
Se puede observar que cada posición (unidades, decenas, centenas, millares, etc.) tiene un
peso especifico, así:
posición 0 unidades peso b0 posición 2 centenas peso b2
1
posición 1 decenas peso b posición 3 millares peso b3
.................
.
En general que la representación de un número en una base b:
N  …n4, n3, n2, n1, n0, n-1, n-2, n-3, … (1)
tiene una forma abreviada de expresar su valor es la siguiente:
N  …n4 x b4 + n3x b3 + n2x b2 + n1x b1 + n0x b0 + n-1x b-1 + n-2x b-2 + n-3x b-3 + … (2)
Para representar un número resulta más cómodo que los símbolos del alfabeto o la base de
numeración sean las menos posibles, pero también es cierto que cuanto menor es la base,
mayor es el número de cifras que se necesitan para representar una cantidad dada.
Por ejemplo, el valor en binario del número decimal 175 es 1111011.
2.2. Sistema de numeración en base dos.
Como ya se dijo las operaciones aritméticas en una computadora se suelen realizar usando
una representación para datos y resultados en sistema binario natural. A pesar de que el cambio
del código binario de E/S a la representación en binario natural se realiza de forma automática
por la computadora, es conveniente recordar una serie de cuestiones relativas al sistema
binario y a las transformaciones entre éste y el sistema decimal.
2.2.1. Definición del sistema binario.
En el sistema de numeración binario b es igual a 2 y Decimal Binario
sólo se precisan dos elementos, el conjunto {0, 1}, 0 000
para representar cualquier número. 1 001
Los elementos de este alfabeto se conocen como 2 010
cifras binarias o bits. En la Tabla 1 se muestran los 3 011
números enteros binarios que se pueden formar con 4 100
tres dígitos o bits, que se corresponden con los 5 101
6 110
números decimales del 0 al 7.
7 111
Tabla 1. Números binarios del 1 al 7.

2.2.1. Pasar un número de sistema binario a decimal.


Para transformar un número en sistema binario a decimal sólo hay que tener en cuenta las
expresiones (1) y (2) en las que b sea igual a 2.
Ejemplo 1.
Transformar a decimal los siguientes números binarios:
110010; 1,1101; 10111,011;
110010)2 = (1 x 25) + (1 x 24) + (1 x 21) = 25 + 24 + 21 = 32 + 16 + 2 = 50)10
Capítulo 2: Representación de la información en las computadoras. Página 4.

1,1101)2 = 20 + 2-1 + 2-2 + 2-4 = 1 + 1/2 + 1/4 + 1/16 = 1,875)10


10111,011)2 = 24 + 22 + 21 + 20 + 2-2 + 2-3 = 16 + 4 + 2 + 1 + 1/4 + 1/8 = 23,375) 10
Como se puede ver en el ejemplo anterior, para transformar un número de binario a decimal
basta con ir sumando los pesos en las posiciones en que haya un 1, como se comprueba en el
siguiente ejemplo.
Ejemplo 2.
1 0 1 0 , 0 1 )2 = 8 + 2 + ¼ = 10,25)10
8 4 2 1 , ½ ¼
1 0 1 1 0 1 0 )2 = 64 + 16 + 8 + 2 = 80)10
64 32 16 8 4 2 1
2.2.2.Pasar un número de sistema decimal a binario.
Para transformar un número en sistema decimal a binario se sigue los dos pasos siguientes:
a) La parte entera del nuevo número en binario se obtiene dividiendo por 2, sin obtener
decimales en el cociente, la parte entera del número decimal que se quiere convertir a
binario, y los cocientes sucesivos que se vayan obteniendo. Los restos de estas
divisiones y el último cociente, que será siempre 0 o 1, son las cifras binarias. El último
cociente será el bit más significativo y el primer resto será el bit menos significativo.
Ejemplo 3.
56)10 en binario es: 56)10 = 111000)2, ya que:
56 2
0 28 2
0 14 2
0 7 2
3 21
1 1
b) La parte fraccionaria del nuevo número en binario se obtiene multiplicando por 2
sucesivamente la parte entera del número decimal que se quiere convertir a binario y las
partes fraccionarias que se vayan obteniendo en los productos sucesivos. El número en
binario se formará con las partes enteras, que serán siempre 0 o 1, de los productos
obtenidos, como se puede ver en el siguiente ejemplo.
Ejemplo 4.
0,1875)10 en decimal es: 0,1875)10 = 0.0011)2
0,1875 0,3750 0,7500 0,5000
x 2 x 2 x 2 x 2
0,3750 0,7500 1,5000 1,0000
Ejemplo 5.
Transformar a binario el número decimal 77,423
a) Parte entera:
77 2
1 38 2
0 18 2
0 9 2
1 4 2
Capítulo 2: Representación de la información en las computadoras. Página 5.

0 2 2
1 1
b) Parte fraccionaria:
0,423 0,846 0,692 0,384 0,768
x 2 x 2 x 2 x 2 x 2
0,846 1,692 1,384 0,768 1,536
Es decir:
77,423)10 = 1101001,01101…)2
En este último ejemplo se observa que un número decimal con cifras fraccionarias pude dar
lugar a un número binario con un número de cifras fraccionarias mucho mayor o incluso
infinito. En la computadora si el número binario se almacena con número prefijado de bits se
producirá un error de truncamiento.
2.3. Operaciones aritméticas con variables binarias.
Una variable binaria puede representar, entre otras cosas, una cifra de un número en binario
o una variable booelana.
Las operaciones aritméticas básicas son suma, resta, multiplicación y división. Al ser la
representación en binario una notación ponderada (es decir que verifica la expresión 2), estas
operaciones son análogas a las realizadas en decimal pero hay que usar para cada posición las
tablas siguientes, según la operación aritmética a realizar.
Tabla 2. Suma aritmética. Tabla 3. Resta aritmética.
a b a+b a b ab
0 0 0 0 0 0
0 1 1 0 1 1 y me adeudo 1
1 0 1 1 0 1
1 1 0 y me llevo 1 1 1 0

Tabla 4. Multiplicación aritmética. Tabla 5. División aritmética.


a b axb a b a/b
0 0 0 0 0 indeterminado
0 1 0 0 1 0
1 0 0 1 0 infinito
1 1 1 1 1 1
Se observa que multiplicar por 10 en binario (es decir, por 2 en decimal) equivale a añadir
un cero la derecha, o a desplazar el punto decimal a la derecha, siendo similar a multiplicar por
10 un número decimal. De igual forma, dividir por 10 en binario (es decir, por 2 en decimal)
se hace desplazando el punto decimal a la izquierda, o eliminando ceros a la derecha.
Ejemplo 6.
101011,101)2 x 2 = 1010111,01)2
1101,1011)2 x 25 = 110110110)2
1010100)2 / 2 = 101010)2
10110,101)2 / 26 = 0,010110101)2
Capítulo 2: Representación de la información en las computadoras. Página 6.

2.4. Representación en complementos.


Para representar un número negativo se puede usar el “complemento de ese número a la
base” o “complemento de ese número a la base menos uno del sistema de numeración” usado.
Así, como se verá después, las sumas y restas quedan reducidas a sumas, independientemente
del signo de los operandos. Este sistema de representación es muy interesante en el caso de las
computadoras, ya que si se usa se reduce la complejidad de los circuitos de la unidad
aritmético – lógica.
El complemento a la base menos uno de un número, N, es el número que resulta de
restar cada una de las cifras de N a la base menos uno del sistema de numeración que se esté
utilizando.
Se pueden restar dos números sumando al minuendo el complemento a la base menos uno
del sustraendo. Si existe acarreo en el resultado, éste se descarta y se suma al resultado así
obtenido.
Ejemplo 7.
- En base 10.
 El complemento a la base menos uno (es decir, a nueve) de 63 es 36;
ya que 99 – 63 = 36.
 El complemento a nueve de 16 es 83; ya que 99-16 = 83.
 Supóngase que se desea efectuar las operaciones 77 – 63 y 1.100 – 16. Para hacerlo
obteniendo el complemento del sustraendo, al calcular este complemento debe
considerarse con el mismo número de cifras el minuendo y el sustraendo y para ello
se añaden ceros a la izquierda si es necesario
77 77
63 o + 36
14 (1) 13
+ 1
14
1100 o bien, 9999 9999
0016 complemento a 9 de 16 – 0016 + 9983
1084 9983 (1)0001
+ 0001
1084
- En base 2.
 El complemento a la base menos uno (es decir, a uno) del número 10010 es 01101
11111
10010
01101
 El complemento a uno de 101010 es 010101
111111
101010
010101
 Restar 1000111 10010
1000111
0010010
0110101
o usando el complemento a uno de 0010010 = 1101101
1000111
1101101
(1)0110100
Capítulo 2: Representación de la información en las computadoras. Página 7.

+ 0000001
0110101
Se observa claramente que para transformar un número binario, N, a complemento a 1
basta con cambiar en N los unos por los ceros y viceversa.
El complemento a la base de un número, N, es el número que resulta de restar cada una
de las cifras de N a la base menos uno del sistema de numeración que se esté utilizando y,
posteriormente, sumar uno a la diferencia obtenida.
Se pueden restar dos números sumando al minuendo el complemento a la base del
sustraendo y, despreciando, en su caso el acarreo del resultado.
Ejemplo 8.
- En base 10.
 El complemento a 10 del número 63 es 37
99 36
63 y + 01
36 37
 El complemento a 10 del número 16 es 84
99 83
16 y + 01
83 84
 Supóngase que queremos efectuar las siguientes operaciones: 7763 y 100 – 16.
Se pueden realizar de forma directa: 7763 = 14; 100 – 16 = 84,
o bien, utilizando el complemento del sustraendo.
77 100
+ 37 y + 84
(1)14 (1)84
 El complemento a 2 del número 10010 es 01110
11111 01101
10010 y + 00001
01101 01110
 El complemento a 2 del número 101010 es 010110
111111 010101
101010 y + 000001
010101 010110
 Supóngase que queremos efectuar las siguientes restas: 11001 10010 y
110000 – 101010. Se pueden realizar de forma directa: 11001 10010 = 00111;
110000 – 101010 = 00110, o bien, utilizando el complemento del sustraendo.
11001 110000
+ 01110 y + 010110
(1)00111 (1)001110
Se observa claramente que para transformar un número binario, N, a complemento a 2
basta con cambiar en N los unos por los ceros y los ceros por los unos y sumar 1 al resultado.
Como resumen de las definiciones dadas y al generalizar se tiene que:
Complemento a la base, b, de un número N de n cifras es (bn N).
Complemento a la base, b –1, de un número N de n cifras es (bn – N 1).
2.5. Códigos intermedios.
Los códigos intermedios se fundamentan en la facilidad de transformar un número en base 2
a otra base que sea una potencia de 2 (22 = 4; 23 = 8; 24 = 16, etc.), y viceversa.
Capítulo 2: Representación de la información en las computadoras. Página 8.

Usualmente se utilizan como códigos intermedios los sistemas de numeración en base 8


(u octal) y en base 16 (o hexadecimal).
2.5.1.Base octal.
En la base octal, b = 8 y el conjunto de símbolos utilizado es:
{0, 1, 2, 3, 4, 5, 6, 7}
Un número octal puede pasarse a binario aplicando los algoritmos vistos con anterioridad
en la Pregunta 2.1. No obstante, al ser b = 8 = 2 3, puede hacerse la conversión con facilidad de
la siguiente forma.
Para transformar un número binario a octal se forman grupos de tres cifras binarias a partir
del punto decimal hacia la izquierda y hacia la derecha. Posteriormente se efectúa
directamente la conversión a octal de cada grupo individual.
Si al formar los grupos de cifras ocurre que existe un grupo que no está completo (tienes
menos de 3 cifras) se completa con ceros por la izquierda si el grupo está a la izquierda del
punto decimal o por la derecha si el grupo está a la derecha.
Como en la práctica sólo es necesario hacer la conversión a octal (o a decimal) de cada uno
los grupos de tres cifras, basta con memorizar la Tabla 1 para poder realizar rápidamente la
conversión a octal.
Ejemplo 9.
nº binario 10 101 110 100 , 111 10)2 = 2.564,74)8
nº octal 2 5 6 4 , 7 4
nº binario 10 110)2 = 26)8
nº octal 2 6
De octal a binario se pasa sólo convirtiendo individualmente a binario (tres bits) cada cifra
octal, manteniendo el orden del número original.
Ejemplo 10.
576,34)8 = 101 111 110 , 011 100)2
5 7 6 , 3 4
132,22)8 = 001 011 010 , 010 010)2
1 3 2 , 2 2
Para pasar de un número octal a decimal se aplica la expresión (2) con b = 8. Para pasar un
número entero decimal a octal se hacen sucesivas divisiones enteras del número y los sucesivos
cocientes por 8 (tal y como se hacía por 2). Para transformar la parte fraccionaria de un
número decimal a octal se hacen sucesivos productos por 8 (igual que cuando para pasar a
binario se hacía por 2).
Ejemplo 11.
 1.367,25)8 = 759,328125)10
1.367,25)8 = (1 x 83) + (3 x 82) + (6 x 81) +(7 x 80) + (2 x 8-1) +(5 x 8-2) =
512 + 192 + 48 + 7+ 0,25 + 0,078125 =759,328125) 10
 760,33)10 = 1.370,2507)8
Parte entera:
760 8
40 95 8
0 15 11 8
7 3 1
Parte fraccionaria:
Capítulo 2: Representación de la información en las computadoras. Página 9.

0,33 0,64 0,12 0,96


x 8 x 8 x 8 x 8
2,64 5,12 0,96 7,68
2.5.2.- Base hexadecimal.
Para representar un número en la base hexadecimal, b = 16, es necesario disponer de un
conjunto o alfabeto de 16 símbolos. Se suele usar el siguiente conjunto:
{0, 1, 2, 3, 4, 5, 6, 7, 8,9, A, B, C, D, E, F}
los valores binarios y decimales que corresponden a las cifras hexadecimales se muestran en la
siguiente tabla.
Hexadecimal Decimal Binario
0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
A 10 1010
B 11 1011
C 12 1100
D 13 1101
E 14 1110
F 15 1111
Tabla 6. Cifras hexadecimales y sus valores decimal y binario.
Al ser b = 16 = 2 4, se puede hacer que las conversiones de binario a hexadecimal y
viceversa, de forma análoga al sistema octal. Pero aquí utilizaremos grupos de 4 bits en lugar
de grupos de 3 bits.
Si al formar los grupos de cifras ocurre que existe un grupo que no está completo (tienes
menos de 4 cifras) se completa con ceros por la izquierda si el grupo está a la izquierda del
punto decimal o por la derecha si el grupo está a la derecha.
Ejemplo 12.
nº binario 10 0101 1110 1010 , 1011 110)2 = 2.5EA,BC)H
nº hexadecimal 2 5 E A , B C
es decir:
0010 0101 1110 1010, 1011 1100 = 2.5EA,BC)H
Ejemplo 13.
nº hexadecimal 1 A D E 7 , E 4)H
nº binario 0001 1010 1101 1110 0111 , 1110 0100)2
es decir:
1A.DE7,E5)H = 1 1010 1101 1110 0111,1110 01)2
De la misma manera que manualmente es muy fácil convertir números de binario a octal y
viceversa, y de binario a hexadecimal y viceversa, también es sencillo hacer estas conversiones
electrónicamente o a través de un programa, por lo que a veces la computadora usa este tipo
de notaciones intermedias internamente o como E/S.
Capítulo 2: Representación de la información en las computadoras. Página 10.

Para transformar un número de hexadecimal a decimal se aplica la expresión (2) con b = 16.
Para pasar un número entero decimal a hexadecimal se hacen sucesivas divisiones enteras del
número y los sucesivos cocientes por 16 (tal y como se hacía por 2 o por 8). Para transformar
la parte fraccionaria de un número decimal a hexadecimal se hacen sucesivos productos por 16
(tal y como se hacía por 2 o por 8).
Ejemplo 14.
 B.3D7,A4)H = 759,328125)10
B.3D7,A4)H = (11 x 163) + (3 x 162) + (13 x 161) +(7 x 160) + (10 x 16-1) +(5 x 16-2) =
45.056 + 768 + 208 + 7+ 0,625 + 0,01953125 = 46.039,64453125) 10
 9372,79)10 = C.942,CA3D)H
Parte entera:
9372 16
137 585 16
92 105 36 16
12 9 4 2
Parte fraccionaria:
0,79 0,64 0,24 0,84
x 16 x 16 x 16 x 16
12,64 10,24 3,84 13,44
El código octal se suele utilizar cuando el número de bits es múltiplo de 3, y el código
hexadecimal cuando dicho número es múltiplo de 4.

3.- CÓDIGOS DE ENTRADA/SALIDA.


Ya se comentó al principio del tema que los códigos de entrada/salida o códigos externos
son códigos que asocian a cada carácter (alfabético, numérico o especial) una determinada
combinación de bits. En otras palabras, un código de E/S es una correspondencia entre los
conjuntos:
 = {A, B, C, D,..., Z, a, b,..., z, 0,1, 2, 3,..., 9, /, +, (, ),...)
y
 = {0,1}n
El número m de elementos del conjunto  depende del dispositivo o sistema informático o
de codificación de E/S que se esté utilizando.
Supóngase que se utiliza un número fijo, n, de bits para codificar los símbolos de . El valor
mínimo de n dependerá de m, número de elementos de . Así:
 Con 2 bits (n = 2) podemos hacer 4 combinaciones distintas, con lo que podemos codificar
hasta 4 símbolos (m = 4) distintos.
 Con 3 bits (n = 3) podemos hacer 8 combinaciones distintas, con los que podemos
codificar hasta 8 símbolos (m = 8) distintos.
n
 Con n bits podemos codificar m = 2 símbolos distintos.

Es decir, se verifica que para codificar m símbolos diferentes se necesitarán n bits, siendo,
n  log2 m = 3.32 log (m) (9)
como en la práctica n debe ser entero, n será el menor número entero que verifique lo anterior.
Ejemplo 15.
Para codificar las 10 cifras decimales {0, 1, ..., 9}se necesitarán:
n = 3,3221 . log (m) = 3,322 bits
es decir, 4 bits (con 3 sólo podemos codificar 8 símbolos).
Capítulo 2: Representación de la información en las computadoras. Página 11.

Dos codificaciones posibles ejemplo son las que se muestran en la Tabla 7.

Obsérvese que, por lo menos, se Alfabeto Código 1 Código 2


necesitan 4 bits, pero pueden hacerse 0 0000 00000
codificaciones con más bits de los 1 1000 10001
necesarios. Con 4 bits no se usan 24- 2 0100 01001
10 = 6 combinaciones, y con 5 bit 25- 3 1100 11000
10 = 22 combinaciones. 4 0010 00101
5 1010 10100
Uno de los códigos usuales, ASCII,
6 0110 01100
suele utilizar unos 95 caracteres (es
7 1110 11101
decir, m = 95), por lo que el número de 8 0001 00011
bits mínimo para codificarlos es 7, ya 9 1001 10010
que 26 < 95 < 27.
Tabla 7. Dos codificaciones posibles para
10 símbolos decimales.
Como se ha hecho en este ejemplo para los 10 símbolos decimales (Tabla 7), se podrían
establecer códigos de E/S de forma totalmente arbitraria y con un número de bits, n, dado por
la expresión 9. Obviamente existen códigos normalizados, que suelen ser usados por los
constructores de computadoras. Algunos de estos códigos se muestran en la Tabla 8, allí, por
comodidad, se representa la codificación en octal o hexadecimal en vez de en binario.
Código “BCD de intercambio normalizado” (Standard Binary Coded Decimal
Interchange Code).
Usualmente este código usa n = 6 bits, con lo que con él se pueden representar m = 26 = 64
caracteres. A veces se añade a su izquierda un bit adicional para verificar posibles errores en la
transmisión o grabación del código (bit de paridad, criterio impar, etc.), de forma que en este
caso cada carácter queda representado por n = 7 bits, tal como se muestra en la Tabla 8.
Las cuatro posiciones de la derecha se denominan (ver Figura 1) bits de posición y para los
caracteres numéricos de 1 a 9 el código de los bits de posición coincide con la representación
en binario natural de dichos números (código BCD para dígitos decimales) y para el 0 con la
representación del 10; es por este motivo por lo que este código se denomina BCD, decimal
codificado en binario. Los dos siguientes bits (bit 4 y 5) se denominan bits de zona, siendo
éstos 00 para los caracteres numéricos. El último bit, 6, que es un bit opcional, es el bit de
verificación citado en el párrafo anterior.
Bit de
Bits de zona. Bits de posición.
verificación.
C B A 8 4 2 1
Bit 6 5 4 3 2 1 0
Figura 1. Formato usado en el código BCD de intercambio normalizado.
Ejemplo 16.
Si en un teclado que utiliza el código BCD de intercambio normalizado se pulsan los
siguientes caracteres: 754.32 BEATRIZ
se genera la siguiente secuencia de bits: (ver Tabla 3.8, columnas 1 y 3):
754.32 BEATRIZ)BCD = 000 0111 100 0101 000 0100 011 1011 100 0011 000 0010 100
0000 011 0010 111 0101 011 0001 001 0011 010 1001 111 1001 001 1001
Código EBCDIC (Extended Binary Coded Decimal Interchange Code).
El código EBCDIC utiliza n = 8 bits para representar cada carácter, con el significado que
se indica en la Figura 2. En la Tabla 8 se incluye, en hexadecimal, el código correspondiente a
cada carácter.
Capítulo 2: Representación de la información en las computadoras. Página 12.

Figura 2. Significado de los campos en la codificación EBCDIC.


Este tipo de codificación permite codificar hasta m = 28 = 256 símbolos distintos, es decir,
permite representar una gran variedad de caracteres: incluye las letras minúsculas y un mayor
número de caracteres especiales. También es posible, y se hace con las combinaciones que
empiezan por 00, codificar caracteres de control que suministran órdenes o señales de control,
p.e., para impresoras, pantallas o para coordinar las transmisiones de información.
Código ASCII (American Standard Code for Information Interchange).
El código ASCII utiliza 7 bits y, hoy día, es de los más usados. Se puede decir que la mayor
parte de las transmisiones de datos entre dispositivos se realizan en esta codificación.
Usualmente se incluye un octavo bit para detectar posibles errores de transmisión o grabación
(bit de paridad). En la columna 5 de la Tabla 8 se incluyen los caracteres ASCII usuales, las
combinaciones restantes de 7 bits (hasta 128) se suelen utilizar como caracteres de control y
caracteres gráficos.
Capítulo 2: Representación de la información en las computadoras. Página 13.

BCD BCD
Caracte de intercambio EBCDIC ASCII Caracte de intercambio EBCDIC ASCII
r normalizado (hexadecimal) (octal) r normalizado (hexadecimal) (octal)
(octal) (octal)

A 061 C1 101 a 81 141


B 062 C2 102 b 82 142
C 163 C3 103 c 83 143
D 064 C4 104 d 84 144
E 165 C5 105 e 85 145
F 166 C6 106 f 86 146
G 067 C7 107 g 87 147
H 070 C8 110 h 88 150
I 171 C9 111 i 89 151
J 141 D1 112 j 91 152
K 142 D2 113 k 92 153
L 043 D3 114 l 93 154
M 144 D4 115 m 94 155
N 045 D5 116 n 95 156
O 046 D6 117 o 96 157
P 147 D7 120 p 97 160
Q 150 D8 121 q 98 161
R 051 D9 122 r 99 162
S 122 E2 123 s A2 163
T 023 E3 124 t A3 164
U 124 E4 125 u A4 165
V 025 E5 126 v A5 166
W 026 E6 127 w A6 167
X 127 E7 130 x A7 170
Y 130 E8 131 y A8 171
Z 131 E9 132 z A9 172

0 112 F0 060 & 160 50 046


1 001 F1 061 ' 114 7D 047
2 002 F2 062 ( 034 4D 050
3 003 F3 063 ) 174 5D 051
4 004 F4 064 * 177 5C 052
5 005 F5 065 + 160 4E 053
6 006 F6 066 - 040 60 055
7 007 F7 067 . 073 4B 056
8 010 F8 070 : 015 7A 072
9 011 F9 071 ; 156 5E 073
< 076 4C 074
SP 100 40 040 = 013 7E 075
! 052 5A 041 > 016 6E 076
" 7F 042 ? 172 6F 077
# 013 7B 043 @ 116 7C 100
$ 133 5B 044 [ 4D 133
% 034 6C 045 ] 5D 135
Tabla 8. Algunos códigos de entrada/salida utilizados es Informática.
Capítulo 2: Representación de la información en las computadoras. Página 14.

4.- DETECCIÓN DE ERRORES EN LA INFORMACIÓN CODIFICADA.


Ya se comentó que si representamos cada carácter por un número fijo de bits, para
representar m símbolos distintos necesitamos al menos n bits, siendo n el menor número entero
que verifica la relación n  log2 m = 3.32 log (m). También se dijo que a veces no es necesario
utilizar todas las combinaciones posibles de los n bits. Cuantas menos combinaciones se
desperdicien (es decir, no correspondan a símbolos a codificar) decimos que el código es más
eficiente.
La eficiencia de un código () se define como el cociente entre el número de símbolos que
se representan realmente, m, dividido por el número, m', de símbolos que en total pueden
representarse; es decir, con códigos binarios en que m' = 2n, se tiene:
 = m /m’ = m/ 2n con 0    1
Lógicamente cuanto más cerca éste de 1, más eficiente será el código.
A veces, las redundancias se introducen deliberadamente para poder detectar posibles
errores en la transmisión o grabación de información. Así, por ejemplo, si necesitamos
transmitir 8 símbolos {A, B, C, D, E, F, G y H} y se hace con un código sin redundancias,
necesitamos n = 3 bits, y un código posible puede ser el Código 1 de la Tabla 9. Caso de que
por algún error varíe uno de los bits, obtenemos otro símbolo del alfabeto, que considerado
por sí mismo (es decir, aisladamente) no puede ser detectado como erróneo.
Si se utilizase un código redundante, tal como Alfabeto Código 1 Código 2
el Código II de la Tabla 9, existirían algunas A 000 0000
posibilidades de detectar errores. Así, por B 001 0001
ejemplo, si se transmite el símbolo H, esto es C 010 0010
0111, y por un error en la transmisión cambiase el D 011 0011
primer bit, esto es, se recibiese 1111, podría E 100 0100
detectarse el error, ya que 1111 no corresponde a F 101 0101
ninguno de los símbolos posibles. G 110 0110
H 111 0111
Tabla 9. Introducción de redundancias en un código.
Las redundancias se introducen de acuerdo con algún algoritmo predeterminado; de esta
manera, los códigos pueden ser verificados automáticamente por circuitos de la computadora o
periféricos, especializados en este objetivo.
Uno de estos algoritmos añade al código inicial de cada carácter un nuevo bit denominado
bit de paridad. Existen dos criterios para introducir este bit:
 Bit de paridad, criterio par: se añade un bit (0 o 1) de forma tal que el número total de
unos del código que resulte sea par.
 Bit de paridad, criterio impar: se añade un bit (0 o 1) de forma tal que el número total
de unos del código que resulte sea impar.
El bit de paridad se introduce antes de transmitir o grabar la información (en la memoria
principal, cinta o disco magnético ). Por ruido o interferencias en la transmisión o defecto del
soporte de información puede eventualmente cambiar un bit (de 1 a 0 o de 0 a 1 ). Si en el
receptor o al leer la información se comprueba la paridad, se detectaría el error, ya que el
número de unos dejaría de ser par (en el caso de criterio par) o impar (en el caso de criterio
impar). En el caso de transmisión de datos, automáticamente se podría provocar una nueva
transmisión del carácter erróneo. Obviamente, si se produjese el cambio simultáneo de dos bits
distintos, no se detectaría el error de paridad; ahora bien, esta eventualidad es mucho menos
probable que la de que cambie un solo bit.
Ejemplo 17.
Mensaje o código inicial Mensaje con bit de paridad (criterio par)
100 0001 0 100 0001
101 1011 1 101 1011
Capítulo 2: Representación de la información en las computadoras. Página 15.

101 0000 0 101 0000


110 1000 1 110 1000
bit de paridad
Mensaje o código inicial Mensaje con bit de paridad (criterio impar)
000 0000 1 000 0000
100 0011 0 100 0011
101 0000 1 101 0000
110 1000 0 110 1000
bit de paridad
En la Tabla 8 el bit más a la izquierda de los códigos BCD de intercambio normalizado es
un bit de paridad según el criterio par. También el código 2 de la Tabla 7 incluye un bit de
paridad según el criterio par.
Existen otros sistemas de introducir redundancias para poder detectar errores. Uno de ellos
es el denominado de verificación de cuenta fija. En este tipo de sistema todos los códigos
correspondientes a los caracteres tienen un número fijo de unos y ceros, siendo la posición
relativa de los mismos la que determina el carácter a que corresponden. Por ejemplo, si
quisiésemos codificar 70 símbolos distintos podríamos utilizar 8 bits, de los cuales siempre 4
deben ser unos y los otros 4 ceros. Los circuitos de verificación tendrían que detectar en
recepción o lectura, si el número de unos (o ceros) de cada carácter coincide con el número
prefijado.
5.- REPRESENTACIÓN INTERNA DE LA INFORMACIÓN.
Como ya se ha comentado, en la computadora se procesan dos tipos de información: datos
e instrucciones. En esta sección vamos a ver la representación interna de los datos.
Según se comentó en el Tema 1, en la memoria y el procesador central la información se
transmite y procesa en unidades denominadas palabras. Esto quiere decir que toda la
información, a la hora de ser procesada por la unidad aritmético-lógica o ser transferida a la
memoria principal, debe estructurarse en palabras. Debido a ello, y para hacer un buen
aprovechamiento de la memoria, la longitud de la palabra debe ser un múltiplo entero del
número de bits utilizados para representar un carácter. Así, por ejemplo, en las computadoras
de 8, 16,32 o 64 bits se utilizan códigos de entrada/salida con n = 8 bits (EBCDIC o ASCII,
con bit de paridad).
Los datos se introducen inicialmente en la computadora según un código de entrada/salida,
tanto si estos son de tipo alfabético como de tipo numérico. Los datos de tipo numérico se
utilizan normalmente para operar aritméticamente con ellos, y la representación simbólica
obtenida con el código de E/S no resulta adecuada para realizar este tipo de operaciones.
Imaginemos, por ejemplo, que deseamos operar con el número 253, y supongamos que está
representado en notación ASCII con bit de paridad par, es decir:
253)10 = 1011 0010 0011 0101 0011 0011)ASCII
Este mismo número representado en binario natural es:
253)10 = 11111101)2
Resulta más adecuado operar con una notación basada en el sistema matemático de
numeración convencional que en un código de E/S. Por otra parte, la representación con el
código de E/S usa un número excesivo de bits frente a la representación en binario natural.
Así que debemos buscar una representación más adecuada para realizar operaciones
matemáticas. Por los motivos anteriores, y teniendo en cuenta que la unidad aritmético-lógica
opera con palabras, se realiza una conversión de notaciones pasando de la representación
simbólica de E/S a otra notación que denominaremos representación interna.
Capítulo 2: Representación de la información en las computadoras. Página 16.

La representación final o interna de los datos depende de la computadora o del lenguaje de


programación utilizado y del uso que el programador desee hacer con los datos. Es decir, el
usuario, según las reglas del lenguaje de programación que utilice, puede optar entre varias
representaciones posibles.
Supongamos, por ejemplo, que se realiza un programa en Pascal. Los datos pueden estar
incluidos en el propio programa en forma de constantes o parámetros, o ser leídos por el
propio programa en el momento de ejecutarse las correspondientes instrucciones de entrada
del programa. Al introducirse el programa, desde el teclado, por ejemplo, todos los caracteres,
sean numéricos o no, se graban según el código de E/S. Posteriormente, de acuerdo con las
reglas del Pascal y las especificaciones de los tipos de las variables realizadas por el
programador, se realiza una reconversión de representación de los datos. Los datos incluidos
en el propio programa se reestructuran cuando el programa se traduce a lenguaje máquina y
los datos leídos por el programa se reconvierten en el momento de ejecutarse las instrucciones
correspondientes que indican claramente el tipo de representación deseada.
5.1.- Tipos de datos.
Se conoce como dato cualquier objeto que pueda manipular la computadora. Un dato
puede ser un carácter leído de teclado, información almacenada en un disco, un número que
está en memoria principal, etc.
Son datos tanto las constantes definidas dentro de los programas, que no alteran su valor
durante la ejecución de los mismos, como las variables usadas es dichos programas. También
son datos la información externa a los programas, a la que se puede acceder a través de algún
procedimiento, ya esté dicha información almacenada en dispositivo de memoria auxiliar o se
generada por algún periférico.
Cuando se usa una computadora para resolver un problema, se debe hacer una abstracción
del mismo y de las magnitudes o entidades que influyen en él. Dichas magnitudes deben ser
representadas por datos. Para representar una entidad o magnitud como un dato, se establece
una aplicación que establezca una correspondencia entre cada valor de la magnitud y un dato.
Así, por ejemplo, para resolver un problema en que intervengan los alumnos de una facultad,
es preciso tener una aplicación, T, del conjunto de valores de la magnitud alumnos, a, en un
conjunto de datos D.
Esta transformación es deseable que esté definida sobre todo el conjunto de valores de la
magnitud, además es conveniente que sea unívoca, es decir, que a dos valores de magnitud
distintos les asocie datos distintos. Para que se pueda operar con ]os datos es necesario que
existan unas operaciones internas en el conjunto de datos, que sean semejantes a las
operaciones usuales en el conjunto de magnitudes. Dichas operaciones deben cumplir que: la
imagen según la transformación T del resultado de una operación en el conjunto de
magnitudes, sea igual al resultado de las operaciones correspondientes en el conjunto de datos
sobre las imágenes de los operandos.
Si denotamos por + la suma en el conjunto de magnitudes, d, lo dicho anteriormente implica
que debe existir una operación  sobre el conjunto de datos, D, que cumpla:
T (x + y) = T (x)  T(y) = X  Y  x, y  d
Para que los resultados obtenidos en el conjunto de datos, D, puedan ser interpretados, es
necesario que exista una transformación inversa, T-1, de éstos al conjunto de magnitudes, d.
Esta aplicación T-1 hará corresponder a cualquier dato, X, un valor de magnitud, x, cuya
imagen por T es el propio dato X.
Capítulo 2: Representación de la información en las computadoras. Página 17.

Se denomina tipo de dato al conjunto de la transformación, T, y de las operaciones y


funciones internas y externas definidas sobre el conjunto de datos. Distintas transformaciones
darán lugar a diferentes tipos de datos, aun cuando el conjunto de datos origen a representar
sea el mismo.
A continuación se verán algunos de los tipos de datos básicos más usuales en Informática:
entero, real, carácter y lógico. Nos encontraremos tipos de datos en la representación de la
información, tanto a nivel físico de la computadora, como en los lenguajes de programación.
No todos los tipos de datos existen en todos los lenguajes de programación. Hay lenguajes
más ricos que otros en tipos de datos.
5.1.1. Datos de tipo entero.
El tipo entero es una representación del conjunto de los números enteros. La representación
es posible para un subrango de números enteros centrado en el origen: entre 2n-1 – 1 y -2n-1. La
razón de esta limitación está en la necesidad de utilizar un espacio finito y fijo, para cada dato,
y en el hecho de que la transformación realizada entre los números enteros y el tipo de datos
consiste en representar el número en binario y almacenarlo con un número fijo de bits.
El número de datos distintos de tipo entero que se pueden generar, cardinalidad del tipo, es
2n (donde n es el número de bits que se utiliza en la representación). Por tanto, si se modifica el
número de bits, n, se obtienen distintos tipos enteros. En consecuencia, no todos los números
enteros se pueden representar.
A cada operación aritmética sobre el conjunto de los números enteros se le asocia, en el tipo
entero, la operación correspondiente. Estas operaciones no pueden realizarse sobre cualquier
par de datos enteros, ya que aparecen indeterminaciones debidas a la propia representación.
Así, si el máximo valor positivo de tipo entero es 32.767 (si la representación se realiza con n
= 16), al realizar la operación: 32.767 + 1 se obtendría un resultado no representable en el tipo.
Este tipo de error se conoce como desbordamiento u overflow. Cuando esto sucede, la
computadora puede, o no, avisar al usuario.
En cualquier caso se obtendrá como resultado algún dato de tipo entero, pero éste no
corresponderá con el valor que se obtendría al realizar la misma operación con números
enteros. En el caso anterior el número generado sería -32.768, si la representación es en
complemento a 2. Cualquier operación con datos de tipo entero es exacta salvo que se
produzcan desbordamientos.
2.1.2. Datos de tipo real.
El tipo de datos reales es una representación del conjunto de los números reales.
Esencialmente la transformación realizada consiste en expresar el número en la forma:
N= M x BE
donde N es el número real a representar, B es la base utilizada para el exponente (que puede
estar prefijada para una computadora dada), E es el exponente del número y M es la mantisa.
El número se almacena en la computadora yuxtaponiendo el signo, el exponente y la mantisa,
cada uno con un número de bits prefijado.
Esta representación no permite almacenar números muy grandes o muy pequeños (del orden
de 1064 o 10-64), lo que conlleva que se produzcan desbordamientos. Por otra parte, la
limitación del número de bits usados para representar la mantisa provoca una falta de precisión
en la representación. Esto es debido a que la aplicación que define al tipo real no es unívoca.
Es decir, cada dato de tipo real es la imagen de un conjunto infinito de números reales,
concretamente representa a un intervalo de la recta real.
Para los datos de tipo real están definidas las operaciones aritméticas. La suma y la
multiplicación de datos de tipo real cumplen la propiedad conmutativa, pero no siempre la
asociativa ni la distributiva. Esto sucede porque el orden en que se realizan las operaciones
influye en el resultado. En cada operación se producen errores por falta de precisión en la
representación (errores de redondeo), que se acumulan durante todo proceso de cálculo.
Capítulo 2: Representación de la información en las computadoras. Página 18.

Los errores de redondeo son especialmente importantes cuando aparecen, directa o


indirectamente, cancelaciones. Esto ocurre, por ejemplo, cuando en una expresión se suma una
cantidad grande, en comparación con e1 valor de la expresión, lo que hace que se pierdan los
dígitos menos significativos y, posteriormente, se resta dicha cantidad, u otra del mismo orden
de magnitud.
Usualmente, en una computadora se pueden utilizar diversos tipos de datos reales: simple,
doble o cuádruple precisión; dependiendo del número de bits que se dedican a representar la
mantisa o el exponente.
5.1.3. Datos de tipo lógico.
Los datos de tipo lógico representan valores lógicos o booleanos. Pueden tomar uno de
entre dos valores: verdadero o falso (abreviadamente V, F o 0, 1).
Sobre los valores lógicos pueden actuar los llamados operadores lógicos. Los operadores
lógicos fundamentales son: Y, O y NO (en inglés: AND, OR y NOT, respectivamente). La
definición de las operaciones se hace indicando su resultado para las cuatro posibles
combinaciones de valores de los argumentos.
En algunos lenguajes de programación hay definidos sobre estos datos otros operadores
logicos, como son: NO-Y, NO-O y NO-exclusivo (en inglés: NAND, NOR y XOR). En la
Tabla 10 se muestra la descripción de estas funciones.
a b aYb aOb a NoY b a NoO b a Xor b No a
0 0 0 0 1 1 0 1
0 1 0 1 1 0 1 1
1 0 0 1 1 0 1 0
1 1 1 1 0 0 0 0
Tabla 10. Funciones lógicas.
Un caso particularmente importante del valor de tipo lógico es el que se obtiene como
resultado al realizar una operación de relación sobres datos de un tipo, sobre el que existe
definida una relación de orden (enteros, reales, carácter, etc.). Una relación es una expresión
formada por dos operandos que pertenecen a un mismo tipo y un operador de relación. Son
operadores de relación:  (mayor o igual), > (mayor),  (menor o igual), < (menor), = (igual),
 distinto, etc. El resultado de una operación de relación es un valor de tipo lógico, que será
“verdadero” si la relación expresada es cierta, y “falso” en caso contrario.
5.1.4.- Datos de tipo carácter.
Los datos de tipo carácter representan elementos individuales de conjuntos finitos y
ordenados de caracteres. El conjunto de caracteres representado depende de la computadora.
Uno de los conjuntos más usados es el ASCII.
No hay ninguna operación interna definida sobre datos de tipo carácter, salvo la asignación
(A = ”B”). Normalmente existen funciones de conversión de tipo, como por ejemplo, la que
asocia a cada dato de tipo carácter un valor entero, que indica su posición en el código.
5.2.- Representación interna de los tipos de datos.
La representación interna de los datos de tipo lógico es muy variada. Así en algunas
computadoras, para representar el 1 o el 0 lógico se hacen 1 o 0 todos los bits de la palabra.
En otras, el 1 o el 0 lógico se representa haciendo l o 0 el bit situado más a la derecha de la
palabra. Y en algunas otras, el 0 lógico se representa haciendo 0 todos los bits y el l lógico
basta con que al menos un bit de la palabra sea 1.
Capítulo 2: Representación de la información en las computadoras. Página 19.

Los datos tipo carácter, representan sencillamente cadenas de caracteres ensambladas en las
palabras del ordenador y se almacenan usando el código de entrada y salida que se utiliza en la
computadora, y no se necesita ninguna transformación para manejarlos, es decir, no es
necesario efectuar ninguna conversión de representación. Para almacenar frases o palabras la
computadora utiliza conjuntos de caracteres.
Los datos de tipo entero y tipo real son los más utilizados, y la mayoría de otros tipos y
estructuras de datos se basan en ellos, por eso analizamos su representación en detalle.
5.2.1.- Representación interna de datos de tipo entero.
Vamos a distinguir dos formas distintas de representar en el interior de la computadora los
datos de tipo entero; éstas son representación binaria y representación de dígitos decimales
codificados en binario (o representación BCD).
5.2.1.1.- Datos de tipo entero representados en binario.
Se supone que en la computadora se reservan n posiciones (incluida la del signo) para
representar el dalo, N. El bit más significativo (MSB: "Most Significative Bit") se representa
como an-1 y el menos significativo como a0. Existen dos alternativas de representación:
Posición  15 14 13 12 13 12 11 10 9 8 7 6 5 4 3 2 1 0
a) Sin signo N>0

Posición  15 14 13 12 13 12 11 10 9 8 7 6 5 4 3 2 1 0
b) Signo y magnitud
o complemento a 1 S N
o complemento a 2

Posición  15 14 13 12 13 12 11 10 9 8 7 6 5 4 3 2 1 0
c) Sesgado N+S
N: binario natural, o complemento a 1, o complemente a 2.

Posición  15 14 13 12 13 12 11 10 9 8 7 6 5 4 3 2 1 0
d) BCD empaquetado BCD BCD
Figura 3. Esquemas de diferentes representaciones de datos de tipo entero.

A) Enteros sin signo.


En este caso todos los bits del dato representan su valor absoluto, véase Figura 3.a. Así con
8 bits se pueden representar los números desde el 0 hasta el 255, ya que 2 8 = 256 y el número
1111 1111)2 = 255)10.
B) Enteros con signo.
En este caso existen cuatro formas de representación interesantes:
Signo y magnitud.- El signo se representa con el bit situado más a la izquierda del dato
(bit an-1), Figura 3.b. Este bit será 0 si el número es positivo y 1 si el número es negativo.
En el resto de bits, desde an-2 hasta a0, se representa el valor absoluto del número en
binario natural.
Complemento a 1.- El signo se representa con el bit situado más a la izquierda del dato
(bit an-1), Figura 3.b. Este bit será 0 si el número es positivo y 1 si el número es negativo.
Si el número es positivo, en el resto de bits ( an-2 a a0) se representa el valor del número
en binario natural.
Si el número es negativo, en el resto de bits ( an-2 a a0) se representa en complemento a 1
del valor absoluto del número en binario natural.
Capítulo 2: Representación de la información en las computadoras. Página 20.

Complemento a 2.- El signo se representa con el bit situado más a la izquierda del dato
(bit an-1) , Figura 3.b. Este bit será 0 si el número es positivo y 1 si el número es negativo.
Si el número es positivo, en el resto de bits ( an-2 a a0) se representa el valor del número
en binario natural.
Si el número es negativo, en el resto de bits ( an-2 a a0) se representa en complemento a 2
del valor absoluto del número en binario natural.
Sesgada.- En esta representación, Figura 3.c, sencillamente se le suma al número N, el
sesgo 2n-1, de forma tal que el número que se obtiene siempre es positivo. Así que no es
necesario reservar explícitamente un bit par el signo.

Tipo de representación.
Nº. decimal Signo y magnitud Complemento a 1 Complemento a 2 Sesgado
7 0111 0111 0111 1111
6 0110 0110 0110 1110
5 0101 0101 0101 1101
4 0100 0100 0100 1100
3 0011 0011 0011 1011
2 0010 0010 0010 1010
1 0001 0001 0001 1001
0 0000 0000 0000 1000
-0 ---- 1111 ---- ----
-1 1001 1110 1111 0111
-2 1010 1101 1110 0110
-3 1011 1100 1101 0101
-4 1100 1011 1100 0100
-5 1101 1010 1011 0011
-6 1110 1001 1010 0010
-7 1111 1000 1001 0001
-8 ---- ---- 1000 0000
Tabla 11. Alternativas de representación de datos de tipo entero con signo para n =4 bits.

En la Tabla 10 se muestra un ejemplo de cómo se representarían los números enteros con


signo, en los cuatro casos posibles de representación, suponiendo una longitud de datos de
n = 4 bits. De la observación de esta tabla se puede concluir que:
a) El mayor número positivo, a, que se puede almacenar es a = 7 = 2 4-1 -1, o generalizando,
para una palabra de n bits.
a = 2n-1- 1
b) Cuando se utiliza la notación en complemento a 1, en los números negativos (caso de
Sperry-Univac 1100, por ejemplo):
1) Existen dos representaciones para el cero: en la Tabla 11, 0000 ("cero positivo") y
1111 ("cero negativo"). Esto es un inconveniente, ya que el programa traductor tendrá
que prever dos comprobaciones, en lugar de una, en las instrucciones de comparación
con cero.
2) El número más negativo, b (Figura 3), que se puede formar es b = -7 = -(2 4-1 - 1), o,
generalizando para una palabra de n bits:
b = -(2n-1 - 1) = -2n-1 + 1
c) Cuando se utiliza la notación en complemento a 2 (caso de IBM, Digital y Data General,
por ejemplo):
l) Existe una sola representación para el cero (0000), lo cual es una ventaja cuando se
desee detectar este valor o un número negativo.
Capítulo 2: Representación de la información en las computadoras. Página 21.

2) El número más negativo, b, que se puede formar corresponde a b = -8 = -2 4-1, o para


palabras de n bits:
b = -2n-1
es decir, admite un valor más para números negativos que en el caso de las
representaciones en signo y magnitud, y en complemento a 1.
La forma más ampliamente utilizada en la actualidad para representar los números enteros
con signo es la de complemento a 2. Ello se debe a la facilidad de efectuar las sumas y restas
con este tipo de representación. La representación sesgada se utiliza para representar los
exponentes de los datos de tipo real.
5.2.1.2.- Datos enteros representados con dígitos decimales codificados en binario (BCD).
En ocasiones, loa datos de tipo entero se representan internamente codificando de forma
aislada cada dígito decimal con cuatro dígitos binarios, según la tabla 12. Así, en un byte se
pueden representar 2 dígitos decimales (véase Figura 3.d), a esta representación se le conoce
como BCD empaquetada, o bien representado un único dígito Dígito Valor
decimal en cada byte, obteniéndose así una representación BCD decimal binario
desempaquetada. 0 0000
Esta forma de codificar es poco eficiente, puesto que de las 1 0001
24 = 16 combinaciones posibles de 4 bits (véase Tabla 6), sólo se 2 0010
pueden usar 10 (Tabla 12). No obstante, a veces se utiliza por 3 0011
la proximidad al sistema decimal y por la gran facilidad de 4 0100
codificar en BCD, sin más que considerar aisladamente cada 5 0101
dígito decimal según la Tabla 12; ya que los algoritmos de 6 0110
transformación de código de E/S a BCD y los circuitos 7 0111
decodificadores son muy sencillos. 8 1000
9 1001
Tabla 12. Dígitos decimales
codificados en binario
(BCD).

5.2.2.- Representación interna de datos de tipo real.


Cuando se opera con números muy grandes se suele utilizar, al igual que hace la
computadora con todos los números reales, la notación exponencial.
Es decir, que todo número, N, se puede expresar en la forma
N = M x BE
Podemos transformar la representación de N, conservando su valor, cambiando el
exponente, E, y reajustando adecuadamente la mantisa, M: si aumentamos (disminuimos) en
una unidad E, debemos dividir (multiplicar) M por B.
Este tipo de representación de los números se denomina notación exponencial, aunque
también recibe otros nombres como notación científica o notación en punto o coma flotante.
La representación y manejo de los datos de tipo real puede ser responsabilidad del hardware
de la computadora o de los traductores de lenguajes. Los microprocesadores actuales
contienen internamente, en el mismo chip, los circuitos para operar en coma flotante y, en otros
casos, se dispone de circuitos integrados para realizar específicamente estas operaciones
(coprocesadores matemáticos o aritméticos). Si el hardware no dispone de circuitería para
coma flotante, y un lenguaje de programación dispone de este tipo de datos, será el traductor
correspondiente el que descomponga las operaciones en coma flotante en términos de las
operaciones que presenta el lenguaje máquina, obteniéndose en este caso un rendimiento
(velocidad) mucho menor en la ejecución de los programas.
Capítulo 2: Representación de la información en las computadoras. Página 22.

Hasta la década de los años ochenta puede decirse que cada fabricante de computadoras
utilizaba un sistema propio para la representación de números reales; pero es de gran
importancia que existan sistemas normalizados, ya que ello posibilita que los matemáticos
construyan bibliotecas de programas de alta calidad, los diseñadores de computadoras puedan
construir unidades aritmético - lógicas muy eficientes, y los fabricantes de circuitos integrados
puedan construir aceleradores y coprocesadores aritméticos estándar. Debido a ello, de 1977 a
1985, la asociación IEEE desarrolló un sistema normalizado de representación, denominado
Normalización IEEE 754 que es el que hoy día tiene mayor aceptación.

Potrebbero piacerti anche