Sistemas de representación numérica

Anuncio
Representación de datos numéricos en el ordenador.
Coma fija y coma flotante 1
Representación de datos no numéricos en el ordenador.
Códigos binarios. ASCII. EBCDIC. 10
Representación de datos numéricos en el ordenador. Coma fija y coma flotante:
Todos los datos el ordenador los representa en sistemas basados en el sistema binario, ya que sólo utiliza
dos estados estables.
Los números reales se clasifican en tres tipos:
• Enteros.− Positivos y negativos.
• Racionales.− Se pueden expresar como cociente de dos enteros.
• Irracionales.− Resto de números que no pueden expresarse como cociente de dos enteros.
Cualquier conjunto de números reales es infinito, por lo que, dadas las limitaciones del espacio material de
representación de las computadoras, no es posible representar a todos. Por el mismo motivo, serán
irrepresentables los números irracionales, que precisan de un número infinito de bits.
Generalmente, en una computadora se asigna un número fijo de n bits para representar un número,
siendo n el tamaño de la palabra, u otro tamaño privilegiado. Esta limitación define el rango de
representación, o sea, los límites. Consecuentemente, los números racionales se expresarán con un número
finito de cifras fraccionarias, lo que dará lugar a una cierta precisión en la representación.
Dada esta limitación de bits, existen diversos métodos de representar los datos numéricos que optimizan la
utilización de estos bits para determinadas aplicaciones.
Vamos a estudiar los llamados métodos posicionales, en los cuales los números se representan en dígitos
sucesivos, teniendo cada dígito un peso o valor que depende del lugar donde se encuentra. Los pesos son
potencias sucesivas de una base.
El valor de un número X formado por los dígitos: xn...x3x2x1x0.x−1x−2...x−m tomando como pesos las
potencias sucesivas de una base r será:
X = xnrn + ... + x3r3 + x2r2 + x1r1 + x0r0 + x−1r−1 + x−2r−2 + ...+ x−mr−m =
Por ejemplo, el número 913.4 en base 10 (r = 10), se puede descomponer:
913.4 = 9 x 102 + 1 x 101 + 3 x 100 + 4 x 10−1
El número binario 1011, se descompondrá:
1011 = 1 x 23 + 0 x 22 + 1 x 21 + 1 x 20 = 11(10
1
Los dígitos xi son siempre positivos y menores que la base (0 " xi < r). En el sistema decimal, con r = 10; 0 "
xi < 10 y en el sistema binario con r = 2; 0 " xi < 2.
Si dos bases r1 y r2 cumplen la condición r1 =
, entonces:
(xn... x2 x1x0.x−1x−2...x−m)(r1 = (ak...a2a1a0.a−1a−2...a−v)(r2 siendo: aj = (xpj+p−1 xpj+p−2... xpj+1 xpj).
De esta propiedad se deduce que los dígitos de la base r1 se obtienen agrupando los dígitos de la base r2 en
grupos de longitud p, empezando a partir del punto decimal. Cada una de estas cadenas de la base menor es un
número de la base mayor. Esta propiedad se puede aplicar para pasar un número binario a octal, agrupando los
bits de 3 en 3, o a hexadecimal, agrupando los bits de 4 en 4.
Por ejemplo para pasar a hexadecimal el número 101101110.1011(2 agrupamos las cifras en los siguientes
grupos: 1 0110 1110 1011 con lo que obtendríamos 16E.B(16
A veces, un número racional tiene una representación exacta en una base, mientras que en otra es de tipo
periódica; por ejemplo: (1/5)(10 = 0.2(10 = 0.0011001100110011...(2
Al tener que encajar los números en un tamaño fijo de n bits, se trunca o pierde el periodo y el ordenador
produce resultados con un cierto error.
A continuación se estudian los métodos más corrientes de representación de enteros y racionales en el sistema
posicional, que pueden dividirse en los siguientes grupos:
• Coma fija sin signo. Binario puro sin signo. Enteros Positivos.
• Coma fija con signo. Binario puro con signo. Enteros.
• Coma fija con complemento restringido a la base. Complemento a uno. Enteros.
• Coma fija con complemento a la base. Complemento a dos. Enteros.
• Coma fija BCD. Enteros.
• Coma flotante. Racionales.
En todos los formatos supondremos que estamos trabajando en base 2 y que el número de bits que tiene
una palabra (es decir el número de bits con los que opera el ordenador) es n.
Coma fija sin signo. Binario puro sin signo.
Es el formato más simple para representar números enteros positivos y responde a la siguiente forma:
Si las cifras del número entero X son xn−1xn−2...x2x1x0,
El valor de X es: X = 2n−1xn−1 + 2n−2xn−2 + ...+ 22x2 + 21x1 + 20x0 =
El rango de valores que admite un número X expresado en este formato es: 0 " X < 2n
Modificando el bit menos significativo, el número variará en una unidad, y, por tanto, la precisión es de una
unidad.
Este formato tiene el inconveniente de que, al realizar sumas, se puede perder el bit más significativo del
resultado cuando no cabe en el tamaño de la palabra (desbordamiento). El ordenador puede disponer de un
mecanismo para avisar cuando se produce esta eventualidad.
2
Coma fija con signo. Binario puro con signo.
Es igual al formato anterior, pero reservando un bit para indicar el signo. Este bit, si es un 0, define al número
como positivo y si es un 1, como negativo.
El mayor número, en valor absoluto, que se puede formar teniendo en cuenta que uno de los n bits es el de
signo, es 2n−1−1. Por tanto el rango es: −(2n−1−1) " X " (2n−1−1).
La precisión sigue siendo la unidad.
Además del problema de desbordamiento se presentan otros dos:
Existen dos ceros: el 00...00 (0) y el 10...00 (−0).
Cuando uno de los operandos es negativo, una suma se convierte en una resta.
Coma fija con complemento restringido a la base. Complemento a uno.
En este sistema los números positivos coinciden con los correspondientes a los sistemas antes descritos. Para
formar los números negativos se aplica el siguiente algoritmo:
−A = 2n − 1 − A = C1, siendo C1 la representación en complemento a uno del número −A
El complemento a uno coincide con el complemento lógico o negación, es decir, para formarse se cambian
los unos por ceros y viceversa.
La precisión también es uno y existen dos ceros. Pero además presenta el problema de que hay situaciones en
las cuales al sumar dos número el resultado es incorrecto:
Al sumar dos números negativos, o un número positivo y uno negativo de menor o igual valor absoluto que el
positivo, el resultado es una unidad inferior al correcto y, además se produce un bit de acarreo superior. La
corrección se realiza sumando el bit de acarreo al resultado. Sin embargo estas correcciones son fáciles de
realizar por la ALU, por lo que se emplean en algunos ordenadores.
Por ejemplo siendo n = 8:
−3(10 = 11111100(2
−8(10 = 11110111(2
−11(10 " 111110011(2 = −12(10, si ahora sumamos el bit de acarreo tendremos: 111110100(2 = −11(10
9(10 = 00001001(2
−4(10 = 11111011(2
5(10 " 100000100(2 = 4(10, si ahora sumamos el bit de acarreo tendremos: 00000101(2 = 5(10
En ambos casos hemos prescindido del noveno bit, ya que para el ordenador tampoco cuenta.
Coma fija con complemento a la base. Complemento a dos.
3
Este formato es parecido al de complemento a uno, con la diferencia de que los números negativos se
representan restando de 2n el valor absoluto del número. Es decir:
−A = 2n − A = C2, siendo C2 la representación en complemento a dos del número −A.
Es equivalente a calcular el complemento a uno y después incrementar una unidad.
El rango de este formato es −2n−1 " X " 2n−1 − 1.
No existe duplicidad del cero y el número negativo más pequeño es una unidad menor que en los casos
anteriores.
Coma fija BCD. Enteros.
El código BCD consiste en representar cada una de las cifras que compone un número en binario,
utilizando para cada una de ellas 4 bits.
Los datos de entrada y salida del ordenador suelen expresarse en base decimal, excepto cuando se dirigen o se
reciben de periféricos de almacenamiento magnético, en cuyo caso se utiliza el sistema binario. Cuando se
precisan realizar cálculos complejos, hay que transformar los datos de entrada a binario; mientras que los de
salida hay que convertirlos a decimal desde el binario.
De todas formas, hay situaciones en las que conviene trabajar con formatos decimales. Es el caso de una
aplicación de contabilidad en la que hay que aplicar ciertas normas de redondeo. Al operar en binario, los
errores de redondeo son diferentes a los obtenidos usando el sistema decimal.
Como el sistema decimal utiliza los números comprendidos entre el 0 y el 9, para representarlos en binario se
necesitan 4 bits. Por lo tanto, se desaprovechan 6 de las 16 posibles combinaciones que se pueden hacer con 4
bits.
Un problema que surge cuando se opera con dígitos BCD, es que los acarreos no se generan siempre que se
deban originar. Por ejemplo, 7 + 4 = 11 que, al ser un número menor que 16, se puede representar con 4 bits y
no produce acarreo. Este motivo hace recomendable utilizar, en ocasiones, el código de exceso a 3 (que
consiste en sumarle 3 al número en binario puro), en el cual, si el resultado real es 10 en una suma, se
representará como 16(10 = 10(16, lo que supone la generación del acarreo.
Decimal BCD Exceso a 3
0 0000 0011
1 0001 0100
2 0010 0101
3 0011 0110
4 0100 0111
5 0101 1000
6 0110 1001
4
7 0111 1010
8 1000 1011
9 1001 1100
Se pueden dar dos situaciones:
• Que la suma de dos cifras sea menor o igual a nueve (es decir que no se genere acarreo):
S = x + y " 9 ! S = x + 3 + y + 3 = x + y + 6, por lo tanto hay que restarle 3 al resultado:
Decimal BCD Exceso a 3
, pero el resultado debe ser 1100, por lo que debemos restar 3:
Para obtener el resultado correcto en exceso a 3.
• Que la suma de dos cifras sea mayor que nueve (es decir que se genere acarreo):
S = x + y > 9 ! S = x + 3 + y + 3 = x + y − 16, por producirse acarreo, por lo tanto lo que hay que hacer es
quitar el acarreo y sumar 3 al resultado:
Decimal BCD Exceso a 3
, pero el resultado debe ser 1 1000, por lo que debemos sumar 3:
5
Para obtener el resultado correcto en exceso a 3.
Coma flotante. Racionales.
Los sistemas de representación numérica con coma fija sólo pueden expresar números enteros.
Escalando adecuadamente las cantidades, se puede representar la coma y así expresar números
racionales. La labor de escalado la realiza el ordenador, automáticamente, de forma dinámica y óptima.
Así surgen los sistemas de representación en coma flotante, cuya propiedad primordial es concatenar
con cada número un factor de escala.
La representación en coma flotante divide los n bits en dos partes:
• Mantisa: contiene los dígitos significativos del número.
• Exponente: indica el factor de escala, como una potencia de la base r.
La mantisa y el exponente tienen unas longitudes respectivas de p y q bits, de forma que p + q = n.
En coma flotante un número A viene expresado como: mantisa x baseexponente.
En la práctica, la base a la que se eleva el exponente es la base en la que se representa la mantisa. De esta
manera, el exponente indica directamente el número de dígitos o posiciones que debe correrse la coma de la
mantisa (hacia la derecha si ésta es positiva y hacia la izquierda si es negativa). Por ejemplo:
0.932 x 102 = 93.2 (2 posiciones a la derecha)
0.932 x 10−2 = 0.00932 (2 posiciones a la izquierda)
0.11101 x 24 = 1110.1
0.11101 x 2−4 = 0.000011101
La mantisa (M) y el exponente (E) se representan en alguno de los sistemas de coma fija ya vistos, de forma
que la base de representación de M coincida con la base de la escala r, esto es, bM = r, por lo que r = 2k pues
es el único modo de ajustar fácilmente el exponente. En efecto, en este caso un desplazamiento a la izquierda
o derecha de la coma, corresponde a un decremento o incremento de E, respectivamente. Los valores de r más
usados en la práctica son 2 y 16.
La mantisa se representa como entero, con la coma a la derecha del dígito m0, o como fracción, con la coma a
la izquierda del dígito más significativo. Por ejemplo:
r = 10 879 x 10−4 (mantisa entera)
0.879 x 10−1 (mantisa fracción)
r = 2 110111 x 2−1 (mantisa entera)
0.110111 x 25 (mantisa fracción)
6
El exponente E se representa en base 2 y en exceso 2q−1, siendo q la longitud de E.
La mantisa puede ser un número entero o una fracción. La representación que más se utiliza es la de que la
mantisa sea una fracción con la siguiente normalización:
• La primera cifra después de la coma no puede ser un cero:
0.004587 x 106 se transforma en 0.4587 x 104
0.010011 x 2101 se transforma en 0.10011 x 2100
• En base 2, el dígito primero será siempre uno, por lo que puede no representarse quedando como bit
implícito. De esta forma, la mantisa tiene un bit más de los que pueden almacenarse en memoria.
Si el número de dígitos de la mantisa es p, la precisión de ésta será 2−(p−1), que es el peso del bit menos
significativo, considerando que un bit está ocupado por el signo.
La precisión total para una base r = 2k será: 2−(p−1) x re = 2−(p−1) x 2kxe = 2kxe+1−p.
De aquí se deduce que la precisión no es uniforme, por depender del exponente "e".
Si un dato se representa por el número más cercano, el dato representado x' distará como mucho, del real x, la
mitad del intervalo entre dos representaciones x'1 y x'2 sucesivas, por lo que la precisión total será: 2kxe+1−p
x 2−1 = 2kxe−p
Representación de datos no numéricos en el ordenador. Códigos binarios. ASCII. EBCDIC:
Cada carácter de una cadena de datos alfanumérica se codifica en un byte. Actualmente el tamaño del
byte es de 8 bits, por lo que se pueden representar 28 = 256 caracteres diferentes, y todos los periféricos deben
estar preparados para poder reconocerlos, ya que su uso principal es el de poder introducir información al
ordenador y extraerla. También se emplea internamente en el ordenador cuando se trata de una información en
forma de texto.
Todos los sistemas de codificación alfanumérica han de cumplir tres reglas muy útiles:
• Intentar que el reconocimiento de los caracteres que representan números sea muy sencillo, dada la
repetición de operaciones de traducción desde/a otros métodos de representación numéricos.
• Que los códigos para las letras mayúsculas difieran sólo en un bit con el de las letras minúsculas, para que
ciertos periféricos que no tengan minúsculas interpreten los caracteres con facilidad y las comparaciones y
búsquedas sean más sencillas.
• Distinguir claramente los tipos de caracteres numéricos, alfabéticos y de control para simplificar los
programas de interpretación de dichos elementos.
Las cadenas de caracteres alfanuméricas, manejadas y almacenadas por el ordenador, pueden ser:
• De longitud fija: Cada dato ocupa un determinado número de bytes fijo. Por lo tanto, puede conocerse
rápidamente el comienzo y el final de cada dato.
• De longitud variable: Para determinar el final de cada dato existen dos métodos:
• Cada dato tiene en su inicio un campo en el que se indica la longitud.
• Cada dato se separa de los colindantes mediante un símbolo específico.
7
Los dos códigos más empleados para la representación de datos alfanuméricos son el ASCII (American
Standard Code for Information Interchange) y el EBCDIC (Extended Binary Coded Decimal
Interchange Code). Ambos sirven para representar tanto las letras mayúsculas como las minúsculas, las
cifras del 0 al 9, las letras acentuadas, símbolos especiales y una treintena de caracteres especiales de
control, como son el fin de fichero, de línea, etc. En ASCII los cuatro primeros bits de las cifras del 0 al 9
son 0011 y las cuatro siguientes son la representación en binario puro de la cifra, mientras que en EBCDIC los
cuatro primeros bits son 1111.
8
Documentos relacionados
Descargar