(Apuntes de Clase de Equipos. Nunca está de mas tenerlos a mano,
"por si las fly´s").
ANEXO 1. Tema 1
REPRESENTACIÓN DE NÚMEROS ENTEROS.
Se emplean varios métodos. Todos ellos utilizan el sistema binario y hay un número límite de dígitos para cada dato numérico, dependiendo del ancho de palabra. Si el ancho de palabra es de n bits, podremos representar 2n números enteros. Si se representan los números con signo, se reservará un bit para el signo, con lo que podremos representar 2n-1.
· Signo y magnitud (módulo y signo).
El bit situado más a la izquierda representa el signo y el resto de bits representan la magnitud. Si tenemos un ancho de palabra de n bits, el rango de representación es:
[-2n-1 + 1, 2n-1 – 1]
Unos de los inconvenientes que puede presentar este sistema es que el 0 tiene dos posibles representaciones: +0 y -0.
Ejemplo utilizando palabras de 8 bits:
-20(10 à 10010100
73(10 à 01001001
· Complemento a 1 (C1).
El bit situado más a la izquierda representa el signo, como el caso anterior. Los números positivos se representan como antes; los negativos se obtienen complementando todos los dígitos, es decir, cambiando ceros por unos y unos por ceros.
Rango de representación: [-2n-1 + 1, 2n-1 – 1]
+ 20(1 0 à 00010100 C a 1 à 11101011 (-2010)
+ 73(10 à 01001001 C a 1 à 10110110 (-7310)
Tiene el inconveniente de que el 0 tiene dos posibles representaciones +0 y -0.
+0à 00000000 C a 1 à 11111111 (-0)
· Complemento a 2 (C2).
El bit más a la izquierda para el signo, 0 para el + y 1 para el -. Los positivos se obtienen como en los casos anteriores.
Rango de representación: [-2n-1, 2n-1 – l]
Para obtener los negativos se procede de la forma siguiente:
§ Se completa el número positivo cambiando ceros por unos y viceversa, incluido el bit de signo. Es decir, se realiza el complemento a 1.
§ Al resultado obtenido se le suma 1 en binario, despreciando el acarreo si existe.
El 0 tiene una única representación.
· Representación sesgada o exceso a 2n -1.
No utiliza ningún bit para el signo, todos los bits representan un valor que corresponde al número representado más el exceso, para n bits viene dado por la formula 2n-1, y se representa en binario natural. La representación del cero es única.
Rango de representación: [-2n-1, 2n-1 – l]
· Suma en complemento a 1.
Los números se suman igual que en binario y si aparece un acarreo en el bit de más a la izquierda, éste se suma al resultado. Las restas ya no existen; lo que se hace es convertir el número que se resta a C a 1 y sumarlo al otro; es decir, solo se hacen sumas.
· Suma en complemento a 2.
El proceso es igual que en el complemento a 1, pero el último acarreo, si existe, se desprecia.
· Error de desbordamiento (overflow).
Si se realizan sumas de número del mismo signo en C1 y C2, y disponemos de un número determinado de bits, ocurrirá un error de desbordamiento (overflow) y el resultado aparecerá con el signo contrario al de los sumandos.
REPRESENTACIÓN DE NÚMEROS REALES.
Los números reales sufren a veces truncamientos en la parte fraccionaria.
· Coma o punto fijo.
La coma ocupa una posición fija. Se utiliza para la representación de números enteros suponiendo que la coma fraccionaria figura a la derecha de los dígitos, está en desuso.
Existen 3 formas de representar números en coma fija:
- Binario puro: se representan los números como lo que hemos visto en el apartado anterior.
- Decimal desempaquetado: Cada dígito de la cantidad a representar ocupa un byte. Cada byte se divide en dos cuartetos. En el cuarteto de la izquierda, van 4 unos (1111; F en hexadecimal) y se denomina bits de zona. En el de la derecha va la cifra codificada en binario utilizando los otros 4 bits; éstos se denominan bits de dígito. El cuarto de la izquierda del último byte representa el signo 1100 para el + y 1101 para el -, que en hexadecimal serian C y D respectivamente.
- Decimal empaquetado: Cada dígito se representa en un cuarteto sin los bits de zona, salvo el primer dígito de la derecha, que lleva a su derecha los bits de signo con los mismos valores que antes (C y D). En un octeto podremos almacenar dos dígitos, excepto el primer octeto que lleva los bits de signo.
· Coma o punto flotante.
Se utiliza la notación exponencial para representar los números.
Número = Mantisa * Base Exponente
Una notación normalizada en la que la mantisa no tiene parte entera y el primer dígito a la derecha de la coma es significativo, salvo en la representación del número 0.
En los números en coma flotante, el ordenador debe almacenar:
o El valor de la mantisa y su signo.
o El valor del exponente y su signo.
o El valor de la base va implícito en el sistema elegido.
o La coma no se almacena.
La coma flotante se puede presentar de dos formas:
- Simple precisión: El número se almacena en una palabra en binario puro, asignando un número de bits para el exponente y otro para la mantisa. La representación en n bits de palabra utiliza el bit más a la izquierda para el signo de la mantisa (0 para le positivo y 1 para el negativo). A continuación le siguen los m bits utilizados para codificar el exponente en notación binaria sesgada o en exceso igual a 2m-1. El resto de bits se utilizan para la mantisa que se almacena en binario natural.
Pasos para el Cálculo:
1. En primer lugar debemos tener en cuenta la longitud de palabra y el número de bits que utilizaremos para el exponente. Para una palabra de n bits la representación siempre es como sigue:
Signo | Exponente | Mantisa |
1 bit | m bits | n – m -1 bits |
2. El bit de signo valdrá 0 si el número es positivo y 1 si es negativo.
3. El exponente se codifica con exceso 2m-1, siendo m el número de bits reservados para el dicho exponente.
4. La mantisa la calcularemos en notación normalizada en base 2:
Dividimos el número a representar por la base elevada al número de dígitos binarios necesarios para representarse.
Ejemplo: 1210 en binario es 1100, necesita 4 dígitos
12 / 24 = 0,75
12 en notación normalizada es 0,75 * 24
5. El exponente se codifica con exceso.
Ejemplo: Para m = 8 à 2m-1 = 28-1 = 128
128 + 4 = 132
132 en binario es 1000100
6. La mantisa se pasa a binario.
Ejemplo: 0,75 en binario es 0,11
Por tanto la representación de 12 en coma flotante con una palabra de 32 bits queda:
Signo | Exponente | Mantisa |
0 | 10000100 | 11000000000000000000000 |
Si el número es negativo, la mantisa (solo la mantisa) se complementa a 1
- Doble precisión: Como el anterior, pero utiliza una palabra para almacenar los números. Si la palabra es de 32 bits, este método utilizará 64 bits (doble palabra). Si consideramos un bit para el signo, más los 8 para el exponente, la mantisa ocupará 55 bits.
Estándar IEEE754: En un programa de ordenador, las instrucciones aritméticas que utilizan cálculos en coma flotante pueden ejecutarse de dos formas.