Download TEMA 2

Document related concepts

Código binario wikipedia , lookup

Representación de números con signo wikipedia , lookup

Decimal codificado en binario wikipedia , lookup

Bit wikipedia , lookup

Sistema binario wikipedia , lookup

Transcript
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.
Capítulo 2:
Representación de la información en las computadoras.
Página 2.
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.
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
Capítulo 2:
Representación de la información en las computadoras.
Página 3.
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
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
posición 1 decenas
posición 3 millares
peso b1
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 sólo se precisan dos elementos, el conjunto {0, 1},
para representar cualquier número.
Los elementos de este alfabeto se conocen como
cifras binarias o bits. En la Tabla 1 se muestran los
números enteros binarios que se pueden formar con
tres dígitos o bits, que se corresponden con los
números decimales del 0 al 7.
Decimal
0
1
2
3
4
5
6
7
Binario
000
001
010
011
100
101
110
111
Tabla 1. Números binarios del 1 al 7.
Capítulo 2:
Representación de la información en las computadoras.
Página 4.
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
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
2
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
1
0,1875
x 2
0,3750
0,3750
x 2
0,7500
0,7500
x 2
1,5000
0,5000
x 2
1,0000
Capítulo 2:
Representación de la información en las computadoras.
Página 5.
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
0
2
1
b) Parte fraccionaria:
0,423
0,846
0,692
x 2
x 2
x 2
0,846
1,692
1,384
Es decir:
77,423)10 = 1101001,01101…)2
2
1
0,384
x 2
0,768
0,768
x 2
1,536
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
Capítulo 2:
Representación de la información en las computadoras.
Página 6.
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
1101,1011)2 x 25
1010100)2 / 2
10110,101)2 / 26
= 1010111,01)2
= 110110110)2
= 101010)2
= 0,010110101)2
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
o
63
+ 36
14
(1) 13
+ 1
14
1100
0016
1084
o bien,
complemento a 9 de 16
9999
– 0016
9999
+ 9983
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
Capítulo 2:
Representación de la información en las computadoras.
Página 7.
111111
101010
010101
Restar 1000111 10010
1000111
0010010
0110101

o usando el complemento a uno de 0010010 = 1101101
1000111
1101101
(1)0110100
+ 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
Capítulo 2:
Representación de la información en las computadoras.
Página 8.
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.
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 = 23, 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
nº octal
10
2
101 110 100 , 111
5
6
4 , 7
nº binario
nº octal
10
2
110)2 = 26)8
6
10)2 = 2.564,74)8
4
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 =
132,22)8 =
101 111 110 , 011 100)2
5
7
6 , 3
4
001 011 010 , 010 010)2
1
3
2 , 2
2
Capítulo 2:
Representación de la información en las computadoras.
Página 9.
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
3
1
7
Parte fraccionaria:
0,33
x 8
2,64
0,64
x 8
5,12
0,12
x 8
0,96
0,96
x 8
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 = 24, 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.
Capítulo 2:
Representación de la información en las computadoras.
Página 10.
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
nº hexadecimal
10
2
0101
5
1110
E
1010
A
,
,
1011
B
110)2 = 2.5EA,BC)H
C
es decir:
0010 0101 1110 1010, 1011 1100 = 2.5EA,BC)H
Ejemplo 13.
nº hexadecimal
nº binario
1
0001
A
1010
D
1101
E
1110
7
0111
,
,
E
1110
4)H
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.
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
4
2
12
9
Parte fraccionaria:
0,79
x 16
12,64
0,64
x 16
10,24
0,24
x 16
3,84
0,84
x 16
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.
Capítulo 2:
Representación de la información en las computadoras.
Página 11.
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.

Con n bits podemos codificar m = 2n 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).
Dos codificaciones posibles ejemplo son las que se muestran en la Tabla 7.
Obsérvese que, por lo menos, se
necesitan 4 bits, pero pueden hacerse
codificaciones con más bits de los
necesarios. Con 4 bits no se usan 2410 = 6 combinaciones, y con 5 bit 2510 = 22 combinaciones.
Uno de los códigos usuales, ASCII,
suele utilizar unos 95 caracteres (es
decir, m = 95), por lo que el número
de bits mínimo para codificarlos es 7,
ya que 26 < 95 < 27.
Alfabeto
0
1
2
3
4
5
6
7
8
9
Código 1
0000
1000
0100
1100
0010
1010
0110
1110
0001
1001
Código 2
00000
10001
01001
11000
00101
10100
01100
11101
00011
10010
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.
Capítulo 2:
Representación de la información en las computadoras.
Página 12.
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
verificación.
C
Bit 6
Bits de posición.
Bits de zona.
B
5
A
4
8
3
4
2
2
1
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.
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.
BCD
de intercambio
EBCDIC
Caracter normalizado
(hexadecimal)
(octal)
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
ASCII
(octal)
BCD
de intercambio
EBCDIC
Caracter normalizado
(hexadecimal)
(octal)
Z
061
062
163
064
165
166
067
070
171
141
142
043
144
045
046
147
150
051
122
023
124
025
026
127
130
131
C1
C2
C3
C4
C5
C6
C7
C8
C9
D1
D2
D3
D4
D5
D6
D7
D8
D9
E2
E3
E4
E5
E6
E7
E8
E9
101
102
103
104
105
106
107
110
111
112
113
114
115
116
117
120
121
122
123
124
125
126
127
130
131
132
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
0
1
2
3
4
5
6
7
8
9
112
001
002
003
004
005
006
007
010
011
F0
F1
F2
F3
F4
F5
F6
F7
F8
F9
060
061
062
063
064
065
066
067
070
071
SP
!
"
#
$
%
100
052
40
5A
7F
7B
5B
6C
040
041
042
043
044
045
&
'
(
)
*
+
.
:
;
<
=
>
?
@
[
]
013
133
034
Página 13.
160
114
034
174
177
160
040
073
015
156
076
013
016
172
116
ASCII
(octal)
81
82
83
84
85
86
87
88
89
91
92
93
94
95
96
97
98
99
A2
A3
A4
A5
A6
A7
A8
A9
141
142
143
144
145
146
147
150
151
152
153
154
155
156
157
160
161
162
163
164
165
166
167
170
171
172
50
7D
4D
5D
5C
4E
60
4B
7A
5E
4C
7E
6E
6F
7C
4D
5D
046
047
050
051
052
053
055
056
072
073
074
075
076
077
100
133
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
el Código II de la Tabla 9, existirían algunas
posibilidades de detectar errores. Así, por
ejemplo, si se transmite el símbolo H, esto es
0111, y por un error en la transmisión cambiase
el primer bit, esto es, se recibiese 1111, podría
detectarse el error, ya que 1111 no corresponde a
ninguno de los símbolos posibles.
Alfabeto
A
B
C
D
E
F
G
H
Código 1
000
001
010
011
100
101
110
111
Código 2
0000
0001
0010
0011
0100
0101
0110
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.
Capítulo 2:
Representación de la información en las computadoras.
Ejemplo 17.
Mensaje o código inicial
100 0001
101 1011
101 0000
110 1000
Página 15.
Mensaje con bit de paridad (criterio par)
0 100 0001
1 101 1011
0 101 0000
1 110 1000
bit de paridad
Mensaje o código inicial
000 0000
100 0011
101 0000
110 1000
Mensaje con bit de paridad (criterio impar)
1 000 0000
0 100 0011
1 101 0000
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
Capítulo 2:
Representación de la información en las computadoras.
Página 16.
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.
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
Capítulo 2:
Representación de la información en las computadoras.
Página 17.
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.
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
2 (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.
n
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.
Capítulo 2:
Representación de la información en las computadoras.
Página 18.
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.
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
0
b
0
aYb
0
aOb
0
a NoY b
1
a NoO b
1
a Xor b
0
No a
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.
Capítulo 2:
Representación de la información en las computadoras.
Página 19.
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.
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
o complemento a 2
S
N
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.
Capítulo 2:
Representación de la información en las computadoras.
Página 20.
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 28 = 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.
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.
Nº. decimal
Tipo de representación.
Signo y magnitud Complemento a 1 Complemento a 2
Sesgado
7
6
5
4
3
2
1
0
0111
0110
0101
0100
0011
0010
0001
0000
0111
0110
0101
0100
0011
0010
0001
0000
0111
0110
0101
0100
0011
0010
0001
0000
1111
1110
1101
1100
1011
1010
1001
1000
-0
-1
-2
-3
-4
-5
-6
-7
-8
---1001
1010
1011
1100
1101
1110
1111
----
1111
1110
1101
1100
1011
1010
1001
1000
----
---1111
1110
1101
1100
1011
1010
1001
1000
---0111
0110
0101
0100
0011
0010
0001
0000
Tabla 11. Alternativas de representación de datos de tipo entero con signo para n =4 bits.
Capítulo 2:
Representación de la información en las computadoras.
Página 21.
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 = 24-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 = -(24-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.
2) El número más negativo, b, que se puede formar corresponde a b = -8 = -24-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
decimal en cada byte, obteniéndose así una representación BCD
desempaquetada.
Esta forma de codificar es poco eficiente, puesto que de las
24 = 16 combinaciones posibles de 4 bits (véase Tabla 6), sólo
se pueden usar 10 (Tabla 12). No obstante, a veces se utiliza
por la proximidad al sistema decimal y por la gran facilidad de
codificar en BCD, sin más que considerar aisladamente cada
dígito decimal según la Tabla 12; ya que los algoritmos de
transformación de código de E/S a BCD y los circuitos
decodificadores son muy sencillos.
Dígito
decimal
0
1
2
3
4
5
6
7
8
9
Valor
binario
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
Tabla 12. Dígitos decimales
codificados en binario (BCD).
Capítulo 2:
Representación de la información en las computadoras.
Página 22.
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.
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.