I.- Sistemas numéricos en computadores 1.1- Datos e información Debido a la naturaleza de las memorias semiconductoras, las computadoras digitales se diseñan para trabajar con el sistema binario. Independientemente de cómo el usuario o el programador interpreta estos bits, la computadora sólo trabaja con ceros y unos. El hombre asigna un significado deseado a un bit o grupos de bits y adapta estos a los requerimientos individuales de un problema en particular. Un grupo de bits se interpretan en función de cómo se agrupan, el significado que se les asigna se denomina sistemas de codificación (siendo los más comunes el octal, binario y hexadecimal). Un valor como el 000101010011b (binario), puede ser codificado como 339D (decimal), 523O (octal) o 153H (hexadecimal). Considerando lo anterior, se puede definir: Datos: Es un conjunto de bits desprovistos de cualquier significado o interpretación. Información: Significado e interpretación que se le incorpora a los datos. Como elemento fundamental de una computadora, la unidad central de procesos (núcleo de un microprocesador) procesa datos, pero el sistema de cómputo opera con información. La sección de entrada (ver fig. 1.1) recibe la información, la libera de la interpretación y presenta los datos a la computadora, la cual los procesa. Una vez terminado el procesamiento, estos datos se convierten en información por la unidad de salida para que sean interpretados por el hombre, tal y como muestra la fig. 1.1. Información Información Datos Datos Figura 1.1.- Tratamiento de los datos e información por la computadora. La información se procesa en forma de caracteres, los cuales pueden clasificarse en: Unidad de Entrada CPU Unidad de Salida
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
I.- Sistemas numéricos
en computadores
1.1- Datos e información Debido a la naturaleza de las memorias semiconductoras, las computadoras digitales se diseñan para
trabajar con el sistema binario. Independientemente de cómo el usuario o el programador interpreta estos
bits, la computadora sólo trabaja con ceros y unos. El hombre asigna un significado deseado a un bit o
grupos de bits y adapta estos a los requerimientos individuales de un problema en particular.
Un grupo de bits se interpretan en función de cómo se agrupan, el significado que se les asigna se
denomina sistemas de codificación (siendo los más comunes el octal, binario y hexadecimal).
Un valor como el 000101010011b (binario), puede ser codificado como 339D (decimal), 523O (octal) o
153H (hexadecimal).
Considerando lo anterior, se puede definir:
Datos: Es un conjunto de bits desprovistos de cualquier significado o interpretación.
Información: Significado e interpretación que se le incorpora a los datos.
Como elemento fundamental de una computadora, la unidad central de procesos (núcleo de un
microprocesador) procesa datos, pero el sistema de cómputo opera con información. La sección de
entrada (ver fig. 1.1) recibe la información, la libera de la interpretación y presenta los datos a la
computadora, la cual los procesa. Una vez terminado el procesamiento, estos datos se convierten en
información por la unidad de salida para que sean interpretados por el hombre, tal y como muestra la fig.
1.1.
Información Información
Datos Datos
Figura 1.1.- Tratamiento de los datos e información por la computadora.
La información se procesa en forma de caracteres, los cuales pueden clasificarse en:
Unidad de
Entrada
CPU
Unidad de
Salida
- Caracteres alfabéticos: Conjunto de letras del abecedario inglés (mayúsculas y minúsculas): A, B, C,
D, E,..., X, Y, Z; a, b, c, d, e,..., x, y, z.
- Caracteres numéricos: Conjunto de números decimales: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
- Caracteres especiales: Son los símbolos no incluidos en los caracteres alfabético y numérico, como
Nótese como (ver la tabla 1.2), hay que hacer las sustituciones basándose en las igualdades: A = 10, B =
11, C = 12, D = 13, E = 14 y F = 15.
1.2.4.1.- Conversión entre los sistemas binario y hexadecimal
La equivalencia entre las cifras hexadecimales y binarias se muestra en la tabla 1.2. En este caso se
requieren de cuatro cifras binarias por cada cifra hexadecimal (cuatro cifras binarias generan 24
= 16
posibles combinaciones, que corresponden con 16 cifras en el sistema hexadecimal).
El método de conversión de binario a hexadecimal es semejante al de binario a octal, sólo que ahora se
agrupan de 4 en 4 bits, por lo que se cumple:
001011011010 .1011b = 2DA.Bh
donde, de derecha a izquierda:
1011b = Bh, 1010b = Ah, 1101b = Dh y 0010b = 2h
En la conversión de hexadecimal a binario se sustituye cada cifra del sistema hexadecimal por las
correspondientes cuatro cifras que la identifican en el sistema binario como se aprecia a continuación:
23E.Fh = 001000111110 .1111b
siendo la equivalencia de izquierda a derecha:
2h = 0010b, 3h = 0011b, Eh = 1110b y Fh = 1111b
Existen otros sistemas dependientes de su base: Trinario (0 al 2), Cuaternario (0 al 3), Duodecimal (0 al
B). En todos ellos, los sistemas numéricos de base menor que 10 utilizan los símbolos de las primeras
cifras del sistema decimal, los mayores o iguales a 10 las letras del alfabeto latino (A, B, C, etc.).
1.2.5.- Conversión del sistema decimal al resto de los sistemas de numeración
Para transformar del sistema numérico decimal a cualquier otro sistema hay que tratar por separado la
parte entera y la parte fraccionaria. Cuando se trata la parte entera se supone que el punto está a la derecha
de la cifra menos significativa y cuando se trata la parte fraccionaria, entonces se supone que la coma está
a la izquierda de la cifra más significativa.
1.2.5.1.- La parte entera del número decimal
Para transformar la parte entera del número decimal se divide por la base del sistema al que se quiere
transformar tantas veces como sea necesario hasta que el último cociente sea cero. El primer resto
obtenido (r0) constituye la cifra menos significativa (la de menor peso) del número que se busca, mientras
que el último resto (rn-1, donde n es el número de divisiones a ejecutar o el número de cifras del sistema
destino) constituye la cifra más significativa (la de menor peso) del número en cuestión.
El número resultante sería:
rn-1 rn-2 rn-3 ... r0 (1.5)
Ejemplo 1.1: Convertir a binario el número 250
Como se realizan sucesivas divisiones entre la base del sistema destino, se dividirá entre 2 (base del
sistema binario), lo cual se muestra en la tabla 1.3.
El número resultante sería:
r7 r6 r5 r4 r3 r2 r1 r0 = 11111010b
siendo válida la siguiente equivalencia:
250d = 11111010b
División Resultado Resto Cifra
250/2 125 0 r0
125/2 62 1 r1
62/2 31 0 r2
31/2 15 1 r3
15/2 7 1 r4
7/2 3 1 r5
3/2 1 1 r6
1/2 0 1 r7
Tabla 1.3.- conversión del número 250 en decimal a binario
Existe un método alternativo de conversión decimal a binario denominado potencias de dos. Este método
consiste en "examinar" en primer lugar el número decimal para descubrir la mayor potencia de dos que se
le puede restar, continuando el proceso hasta reducir el número decimal original a cero.
En el ejemplo 1.1, la primera potencia de dos que se le puede restar al número 250 es 128 (la próxima de
mayor orden es 256 que supera el número) por lo que la cifra correspondiente del número binario que
posea ese peso debe ser uno. Posteriormente se realiza la operación 250-128, de lo que resulta 122. A 122
la próxima potencia de dos que se le puede restar es 64, la sustracción puede ser realizada por lo que la
cifra binaria cuyo peso sea 64 debe ser uno. El proceso continúa, siendo el resultado:
Potencias de dos: 128 64 32 16 8 4 2 1
Número binario: 1 1 1 1 1 0 1 0
Lo que es equivalente a la solución del ejemplo 1.1.
Ejemplo 1.2: Convertir a octal el número 160
Se realiza, para la conversión exigida, sucesivas divisiones entre la base del sistema octal (8), tal y como
se muestra en la tabla 1.4.
División Resultado Resto Cifra
160/8 20 0 r0
20/8 2 4 r1
2/8 0 2 r2
Tabla 1.4.- Conversión del número 160 en decimal a octal
La solución sería:
r2 r1 r0 = 240o
lo que es equivalente a:
160d = 240o
Ejemplo 1.3: Repita el ejemplo 1.1, utilizando el sistema octal como intermediario
Una forma natural de convertir de decimal a binario es a través del sistema octal, que es una base
intermedia entre ambos. El sistema octal, al tener mayor base, requiere de menos divisiones. Después de
tener el valor en octal, se transfiere a binario de forma directa. Para obtener la solución del problema,
primero se transforma 250 a octal, tal y como se muestra en la tabla 1.5.
División Resultado Resto Cifra
250/8 31 2 r0
31/8 3 7 r1
3/8 0 3 r2
Tabla 1.5- Conversión del número 250 en decimal a octal
Utilizando los resultados de la tabla 1.5 se cumple:
250d = 372o
se puede entonces transferir el valor octal a binario de manera directa (utilizando la tabla 1.2):
372o = 011111010b
Nótese como el resultado es similar al ejemplo 1.1.
Ejemplo 1.4: Convertir a hexadecimal el número 155 En este ejemplo, como la base del sistema hexadecimal es 16, se realizan sucesivas divisiones entre esta
base, tal y como se muestra en la tabla 1.6.
División Resultado Resto Cifra
155/16 9 11 r0
9/16 0 9 r1
Tabla 1.6.- Conversión del número 155 decimal en hexadecimal
Como el número 11 constituye la cifra B en hexadecimal, el resultado sería:
r1 r0 = 9Bh
por lo tanto:
155d = 9Bh
Un método alternativo de transformar de decimal a hexadecimal puede ser convertir el número decimal a
octal, este a binario y por último a hexadecimal.
Ejemplo 1.5: Reproduzca el ejemplo 1.4, utilizando los sistemas binario y octal como intermediarios
En primer lugar se realiza la conversión a octal, tal y como se muestra en la tabla 1.7.
División Resultado Resto Cifra
155/8 19 3 r0
19/8 2 3 r1
2/8 0 2 r2
Tabla 1.7.- Conversión del número 155 en decimal a octal
Del resultado que muestra la tabla 1.7 resulta:
155d = 233o
entonces se puede convertir de octal a binario:
233o = 010011011b
y finalmente, convertir de binario a hexadecimal:
010011011b = 9Bh
Por lo que 155d = 9Bh, lo coincide con el resultado del ejemplo 1.4.
Los ejemplos anteriores demuestran que mientras mayor es la base, menor número de cifras para
representar un número. El valor 155d posee 8 cifras en el sistema binario (base 2), 3 cifras en el sistema
octal (base 8), 3 cifras en el sistema decimal (base 10) y 2 cifras en el sistema hexadecimal (base 16).
1.2.5.2- La parte fraccionaria del número decimal
Para transformar la parte fraccionaria de un número decimal a otro sistema, en lugar de dividirla, hay que
multiplicarla por la base. Cada vez que se multiplique la fracción decimal por la base se obtiene una parte
entera. La primera la denominamos p1 y se extrae del resultado para que solo quede la parte fraccionaria.
Esta parte fraccionaria que queda se multiplica nuevamente por la base y se extrae la parte entera, que
denominamos p2 y así sucesivamente hasta que sea necesario o se indique.
El número resultante en la nueva base será:
0 . p1 p2 p3 p4 ... pm
donde m es el número de cifras de la parte fraccionaria.
Ejemplo 1.6: Transforme en octal el número 0.32
Al multiplicar de forma sucesiva por la base del sistema octal (8), resulta:
0.328 = 2.56 (p1 = 2)
0.568 = 4.48 (p2 = 4)
0.488 = 3.84 (p3 = 3)
0.848 = 6.72 (p4 = 6)
0.728 = 5.76 (p5 = 5)
. . .
El método ejecutado ha sido el siguiente:
En primer lugar el número a convertir ha sido multiplicado por la base del sistema que se desea (8), al
resultado (2.56) se le ha sustraído la parte entera (2) y este constituirá la cifra más significativa de la parte
fraccionaria, al extraérsele a 2.56 la parte entera queda 0.56, al que se le multiplica la base; al resultado
(4.48) se le extrae la parte entera (4) y constituirá la próxima cifra de la fracción del número, este proceso
continúa sucesivamente. Se puede plantear entonces que:
0.42d = 0.24365...
Nótese como el resultado no ha sido exacto, al programador le corresponde seleccionar el número de
cifras fraccionarias para una precisión deseada, la cual dependerá de la aplicación.
Ejemplo 1.7: Convertir el número 0.125d a binario
Como la base del sistema binario es 2, ahora las multiplicaciones sucesivas serán por este término:
0.125 2 = 0.250 (p1 = 0 ) (cifra más significativa de la parte fraccionaria)
0.250 2 = 0.500 (p2 = 0)
0.500 2 = 1.000 (p3 = 1)
0.000 2 = 0.000 (p4 = 0)
y las cifras sucesivas seguirán siendo cero, de la anterior operación resulta:
0.125d = 0.001
Un método más rápido puede ser el transformar la fracción decimal a octal y posteriormente a binario. En
el ejemplo 1.7 se aplicaría:
0.125 8 = 1.000 (p1 = 1)
0.000 8 = 0.000 (p2 = 0) y las cifras sucesivas seguirán siendo cero.
Se puede entonces afirmar que:
0.125d = 0.1o
y de octal a binario:
0.1o = 0.001b
lo cual coincide con el resultado de la conversión directa a binario.
1.3- Aritmética en los sistemas numéricos
La estructura de datos en los computadores son básicamente agrupaciones de 8, 16 ó 32 bits; todos ellos
son potencia de 2 y 4, por lo que se estudiará la aritmética de los números binarios (que constituyen la
unidad de información básica de las computadoras) y los números hexadecimales.
1.3.1.- Suma en los sistemas numéricos
1.3.1.1.- Suma binaria
La suma de números en el sistema binario sigue las siguientes reglas:
Acarreo anterior
1 del lugar menos
COSUMANDO 0 0 1 1 1 significativo.
SUMANDO +0 +1 +0 +1 +1
___ ___ ___ ___ ___
SUMA 0 1 1 10 11
Acarreo al
siguiente lugar
más significativo
Las tres primeras reglas son elementales, la cuarta regla establece que la suma 1+1=10, con el bit más
significativo trasladado a la próxima posición más significativa. La quinta regla establece que un 1
(acarreo de la operación efectuada en la anterior posición) sumado a 1+1 es 11 donde el 1 de la izquierda
constituye acarreo a la posición adyacente más significativa.
Ejemplo 1.8: Realice la operación de suma binaria que se muestra a continuación ACARREOS 111 1
COSUMANDO 10011101b 157d
SUMANDO +00010101b + 21d
__________ _________ _____
SUMA 10110010b 178d
La suma de los números binarios mostrados es 10110010b, lo que puede comprobarse con la suma
equivalente decimal que se desarrolla a la derecha.
1.3.1.2.- Suma hexadecimal
La complejidad de la suma hexadecimal radica en la necesidad de reajustar el resultado de la operación de
acuerdo a la base, al sumar A + B se debe pensar “A es 10 en el sistema decimal al que debo sumarle 11,
que es el decimal de B; el resultado es 21 en decimal. El hexadecimal 10h es 16 en decimal, al que le falta
5 para llegar a 21d, por lo tanto 21d = 15h”.
Si se reajustan las reglas del sistema decimal al hexadecimal y se aplican adecuadamente, se puede operar
en hexadecimal de manera directa. No obstante puede tomarse como referencia la tabla 1.8 para la
realización de la suma en hexadecimal. En cuanto al acarreo, sigue la misma regla que los sistemas
decimal y binario.
+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 1 2 3 4 5 6 7 8 9 A B C D E F
1 1 2 3 4 5 6 7 8 9 A B C D E F 10
2 2 3 4 5 6 7 8 9 A B C D E F 10 11
3 3 4 5 6 7 8 9 A B C D E F 10 11 12
4 4 5 6 7 8 9 A B C D E F 10 11 12 13
5 5 6 7 8 9 A B C D E F 10 11 12 13 14
6 6 7 8 9 A B C D E F 10 11 12 13 14 15
7 7 8 9 A B C D E F 10 11 12 13 14 15 16
8 8 9 A B C D E F 10 11 12 13 14 15 16 17
9 9 A B C D E F 10 11 12 13 14 15 16 17 18
A A B C D E F 10 11 12 13 14 15 16 17 18 19
B B C D E F 10 11 12 13 14 15 16 17 18 19 1A
C C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B
D D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C
E E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D
F F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E
Tabla 1.8.- Suma en el sistema hexadecimal
Ejemplo 1.9: Realice la operación de suma hexadecimal que se muestra a continuación
ACARREO 1 1 1 1
COSUMANDO 8EE4h 36580d
SUMANDO +1AF8h + 6904d
______ _______
SUMA A9DCh 43484d
La suma hexadecimal se podría analizar de la siguiente forma: "4 más 8 son 12, que corresponde a C en
hexadecimal. Eh corresponde al 14d y Fh al 15d, 14 más 15 es 29, 10h corresponde a 16d y a este último
le faltan 13d para 29; 13d corresponde a Dh y se arrastra un acarreo. E es 14 que al sumarle 1 (acarreo de
la anterior posición) da 15d, a este se le suma 10 que es el decimal de Ah, lo que es igual a 25. 10h corre-
sponde con 16d al cual le faltan 9 para llegar a 25, coloco el 9 y se genera acarreo a la próxima cifra más
significativa. Lo restante es obvio, 1 + 8 + 1 = 10d que corresponde con Ah". Compare este resultado con
la tabla 1.8.
1.3.2.- Sustracción en los sistemas numéricos
1.3.2.1.- Sustracción binaria
La sustracción binaria sigue las siguientes reglas:
0 10
MINUENDO 0 1 1 1 0
SUSTRAENDO -0 -0 -1 -1
___ ___ ___ _____
DIFERENCIA 0 1 0 1
Las tres primeras operaciones son las mismas que la resta decimal. La cuarta requiere un préstamo del
lugar más significativo pasando a ser el minuendo 10b (2d) que al restarle 1 da uno como resultado.
Ejemplo 1.10: Realice la operación de sustracción binaria que se muestra a continuación
PRÉSTAMO 11 1
MINUENDO 1001110b 78d
SUSTRAENDO -0110101b -53d
_________ ____
DIFERENCIA 0011001b 25d
En la primera columna de derecha a izquierda, a cero no se le puede sustraer uno, por lo que se le solicita
préstamo a la cifra inmediata más significativa (minuendo) cuyo valor pasa de uno a cero, de ello resulta
que en la columna menos significativa la operación es 10b-1=1. En la segunda columna queda 0-0 = 0
(recuérdese que el minuendo cedió una unidad a la cifra menos significativa). Las operaciones de las
columnas 3 y 4 son básicas, en la quinta columna sucede lo mismo que en la primera, pero el minuendo
de la sexta columna es cero, por lo que no puede ceder ninguna unidad, para poder hacerlo la sexta
columna solicita préstamo a la séptima (cifra diferente de cero), entonces el minuendo de la séptima
columna pasa a 0; el minuendo de la sexta pasa a 10 y la quinta le solicita a la sexta, como se aprecia en la
operación. Nótese que cuando tratamos 10b no nos referimos al 10 decimal, si no al 2 en binario.
1.3.2.2.- Sustracción en hexadecimal
La sustracción en hexadecimal cumple las mismas reglas que la sustracción decimal y binaria,
reajustándose el resultado de acuerdo a la base. Cuando se pide un préstamo se reduce en uno la anterior
posición (más significativa) y se suma 16 a la cifra que ha solicitado el préstamo.
Ejemplo 1.11: Realice la sustracción en hexadecimal que se muestra a continuación
PRÉSTAMO 1
MINUENDO 6AEBh
SUSTRAENDO -23F9h
______
DIFERENCIA 46F2h
En este ejemplo se opera de la siguiente forma: "B es equivalente a 11, 11 menos 9 es 2, lo que se anota;
E es equivalente a 14, al que no se puede restar 15 (valor de F) por lo que se solicita un préstamo a la
posición más significativa que pasa de A (10 decimal) a 9. Como resultado del préstamo el valor del
minuendo de la columna 2 es 16 (base) + 14 = 30, 30 menos 15 es 15, que representa a F en hexadecimal,
cifra que se anota. En la tercera columna 9 menos 3 es 6 y en la última 6 menos 2 es 4".
1.3.3.- Multiplicación binaria
La multiplicación binaria sigue las reglas que muestra la tabla 1.9.
Multiplicando Multiplicador Producto
0 0 0
1 0 0
0 1 0
1 1 1
Tabla 1.9.- Reglas de la multiplicación binaria
Se puede apreciar que siempre que el multiplicador sea 0, el resultado será 0 (de las dos primeras reglas) y
que siempre que el multiplicador sea 1 el multiplicando se copia como producto resultante (las dos
últimas reglas).
Ejemplo 1.12: Realice la operación de multiplicación binaria que se muestra a continuación
MULTIPLICANDO 1010 10
MULTIPLICADOR 101 5
_____ ___
PRIMER PRODUCTO PARCIAL 1010 50d
SEGUNDO PRODUCTO PARCIAL 0000
TERCER PRODUCTO PARCIAL 1010
_______
PRODUCTO FINAL 110010b
Como en la multiplicación decimal el multiplicando en binario se multiplica primero por la cifra menos
significativa del multiplicador, como esta última es 1, se copia el multiplicando (primer producto parcial).
Como la segunda cifra del multiplicador es cero, el resultado será cero en todas las cifras (0000),
colocándose desplazado una unidad a la izquierda (segundo producto parcial). Por último la tercera cifra
del multiplicador es 1, por lo que se copia el multiplicando desplazado una unidad a la izquierda con
respecto al segundo producto parcial. La suma de los productos parciales, por supuesto, será el resultado
de la multiplicación. La comprobación de que el resultado es correcto, se muestra a la derecha, donde se
ha ejecutado la misma operación en decimal.
Para que la computadora sea capaz de realizar la multiplicación como se ha mostrado, debe ser capaz de:
1.- Determinar si un bit del multiplicador es 0 ó 1.
2.- Desplazar los productos parciales.
3.- Adicionar los productos parciales.
No es necesario esperar que todos los productos parciales estén formados para sumar estos, se puede
sumar de dos en dos.
Del ejemplo anterior, los primeros dos productos parciales son:
1010
+0000
_______
01010
Nótese como el segundo producto parcial ha sido rotado una unidad a la izquierda. A la suma anterior se
le adiciona el tercer producto parcial después de ser rotado a la izquierda, siendo el resultado:
01010
+ 1010
_______
110010
Considerando lo anterior, una multiplicación puede ejecutarse muestreando cada bit en turno del
multiplicador, adicionando el multiplicando en una variable que sea de suma parcial, desplazar el
multiplicando a la izquierda cada vez que un nuevo bit es muestreado, obteniéndose como resultado de la
suma de los productos parciales el producto. El proceso en el ejemplo 1.12 se realiza como se muestra en
el algoritmo 1.
I II
Resultado Parcial Multiplicador Comentario
0000 0101 Se multiplica 105
El resultado parcial se inicializa a 0.
0000 0010 1 1. Se rota I y II a la derecha,
+1010 | muestreando el bit de la derecha
_____ muestreado del multiplicador, como éste es 1,
1010 se le suma el multiplicando a I.
0101 0001 0 2. Se rota I y II a la derecha,
| como el bit muestreado es
muestreado 0, se continúa el proceso.
0010 1000 1 3. Se rota I y II a la derecha,
+1010 | como el bit muestreado es
_____ muestreado 1, se le suma el multiplicando a I.
1100
0110 0100 0 4. Se rota I y II a la derecha.
| como el bit muestreado es
muestreado 0, se continúa el proceso.
0011 0010 5. Se rota I y II a la derecha
y en ellos quedará el resultado.
Algoritmo 1.- Pasos para ejecutar la multiplicación del ejemplo 1.12
Cuando se multipliquen números signados, si el signo del multiplicando y el multiplicador son ambos
positivos o negativos, el resultado será positivo; si solo uno es negativo, el resultado será negativo. Para
lograr ello se puede almacenar el bit del signo y realizar las operaciones con números positivos, al final se
realizaría el cambio de signo correspondiente.
1.3.4.- División binaria
Las reglas de la división se muestran en la tabla 1.10.
Dividendo Divisor Cociente
0 1 0
1 1 1
1 0 Indefinido
0 0 Indefinido
Tabla 1.10.- Reglas de la división binaria
La división posee un dividendo, un divisor, un cociente y un resto. El cociente indica cuántas veces cabe
el dividendo dentro del divisor.
Ejemplo 1.13: Realice la división binaria que se muestra a continuación
DIVIDENDO DIVISOR 101011011 111 347 7
111 28 49
____ 110001 ___
0111 COCIENTE 67
111 63
____ ___
0001011 4
111
_____
0100
RESTO
Como se puede apreciar, el divisor posee tres cifras, se toman entonces las tres primeras cifras más
significativas (101) del dividendo. Como el valor de las tres cifras es menor que el divisor se toma una
cuarta, ahora 1010 es mayor que el divisor siendo el primer cociente 1. Al multiplicar el cociente por el
divisor se copia este último, sustrayéndolo al dividendo. El resultado como se aprecia es 011 al cual se le
adiciona la quinta cifra del dividendo (resultando 111). A este valor se le puede sustraer el divisor, por lo
que el cociente es 1 (se anota), siendo el resto 0. Al bajar la sexta cifra del dividendo no se le puede
sustraer el divisor por lo que el cociente es 0, así sucesivamente se le van adicionando las restantes cifras
del dividendo y colocando los ceros correspondientes en el cociente (tantos como cifra bajadas) hasta que
se le pueda sustraer el divisor, esto ocurre con la cifra menos significativa del dividendo, el último valor
del cociente es 1 y el resto es 100. La comprobación, efectuada esta misma operación en el sistema
decimal, se muestra a la derecha.
Para que una computadora realice la división, la operación fundamental es la sustracción del dividendo,
después de esta operación:
a.-Si el resultado es negativo, se coloca un cero en el cociente (en el bit más a la derecha) y el dividendo
se restablece a su valor original, sumándole el divisor restado. Posteriormente, el cociente y el dividendo
son rotados simultáneamente a la izquierda.
b.-Si el resultado de la sustracción es positivo o cero, un uno se coloca en el dígito más a la derecha del
cociente, rotando a la izquierda el dividendo y el cociente.
Los pasos para lograr la división serían:
1.- Se le resta al dividendo el divisor, si este último es mayor (el resultado es negativo), el cociente será
cero y el resto será el valor del dividendo.
2.- Se alinea el bit más a la izquierda cuyo valor es uno en el divisor con el bit más a la izquierda del
dividendo cuyo valor es uno, rotando este último a la izquierda y almacenando en una variable M el
número de veces que es necesario realizar el desplazamiento.
3.- El paso básico será repetido M+1 veces.
4.- Se ajusta el resto, rotando M+1 veces a la derecha lo que antes era dividendo después que el último
paso básico se haya realizado.
En el ejemplo 1.13 las condiciones iniciales son:
1 2 3
Cociente Dividendo divisor
0000000000 0101011011 0000000111
0111000000
donde se divide 347 / 7 = 49, siendo el resto 4. El divisor será rotado seis veces a la izquierda para
alinearlo al dividendo, por tanto, el paso básico se realizará siete veces. En algoritmo 2 se muestran los
pasos de la división.
1.4.- Representación de los datos en las computadoras
La información numérica se almacena en localizaciones de memoria de la computadora. Cada
localización de memoria (o unidad de información) puede tener uno de dos estados posibles (la forma de
almacenar la información depende del tipo de memoria, por ejemplo las memorias RAM dinámicas
poseen en una celda un transistor MOS y un capacitor, la carga y descarga de este último define los dos
estados posibles). A la información almacenada en una localización de memoria se le llama dígito binario
o bit (proviene de la palabra Binary digIT, nótese las letras en mayúsculas).
La computadora trata la información almacenada en las memorias como una agrupación de bits, a esta
agrupación de bits se le denomina registro de almacenamiento. El registro de almacenamiento determina
como pueden ser almacenados los datos en un ordenador, lo cual se aprecia en la fig. 1.2.
COCIENTE DIVIDENDO COMENTARIO
0000000000 0101011011 2.Se sustrae 2 menos 3.El
-0111000000 resultado es negativo
___________ por lo que se coloca un
1110011011 cero en el cociente ro-
+0111000000 tando este y el dividen-
___________ do a la izquierda después
0101011011 de ser restaurado este
0000000000 1010110110 último.
|
Colocado
0000000000 1010110110 3.Se sustrae 2 menos 3.El
-0111000000 resultado es positivo
___________ y se coloca 1 en el bit
0011110110 más a la derecha del
cociente y se rota este
0000000001 0111101100 y el 2 a la izquierda.
|
Colocado
0111101100 4.Se repite el paso 3.
-0111000000
___________
0000101100
0000000011 0001011000
|
Colocado
0001011000 5.Se repite el paso 2.
-0111000000
___________
1010011000
+0111000000
___________
0001011000
0000000110 0010110000
|
Colocado
0000001100 0101100000 6.Se repite el paso 2.
0000011000 1011000000 7.Se repite el paso 2.
0000110001 1000000000 8.Se repite el paso 3.
0000110001 0000000100 9.El dividendo debe ser rotado 7 veces a la derecha
COCIENTE (49) RESTO (4)
Algoritmo 2.- Pasos para realizar la división 347 / 7
Un dato, constituido por determinado número de bits, puede ser utilizado para almacenar un número,
empleando el sistema de numeración binario. Cada uno de los bits que forman el dato puede tomar el
valor 0 ó 1, de manera que si este tiene n bits, con el dato se pueden formar:
Número de combinaciones de un dato = 2n (1.6)
La figura 1.3 muestra un dato genérico, donde n es el número de bits. Cuando n = 8 se tendrá un octeto
(byte) , si n = 16 se tendrá una palabra (word) y si n = 32 se tendrá una palabra doble (double word).
Esta estructura de datos se aprecia en la figura 1.2.
Los bits se enumeran de derecha a izquierda comenzando por cero. Al bit cero se le denomina bit menos
significativo o LSB (del inglés Least Significant Bit) y al bit n-1 se le llama bit más significativo o MSB
Figura 1.11.- Formato para representar los números reales en la computadora (8 bits para la
mantisa , 7 para el exponente y 1 para el signo)
Todo número real N está caracterizado por:
a-) Un signo para la mantisa (s).
b-) Una mantisa (M).
c-) Un signo para el exponente.
d-) Un valor para el exponente (x).
e-) Una base (B).
Así todo número N puede ser representado de la siguiente manera:
N = MBx (1.14)
Si en una palabra de dato se pudieran representar estos 5 elementos, se está representando a un número
real.
La forma de representar el exponente no es en complemento a dos, sino de forma sesgada. Para ello se
tiene en cuenta lo siguiente:
Un exponente de e bits tendrá 2e posibles combinaciones distintas, de ellas el cero absoluto se representa
por la mitad del intervalo, es decir 2e/2
, debido a ello el valor del exponente será:
E = 2(e – 1)
+ x (1.15)
donde:
E: valor que toma el exponente en la palabra de dato.
x: valor decimal del exponente a representar.
Ejemplo 1.28: Represente, en un exponente de 7 bits (en el formato que se representa en la figura 1.12), los valores -3 y +25 Para el valor -3, aplicando (1.15):
E = 27-1
+ (-3)d = 64d – 3d = 61d = 0111101b
Por tanto –3d se representa en 7 bits como 0111101b.
Para el valor 25, aplicando (1.15):
E = 27-1
+ 25d = 64d + 25d = 89d = 1011001b
Por tanto el valor 25d se representa en 7 bits como 1011001b
Como se ha tomado como referencia la mitad del intervalo del exponente como cero, este corresponderá
con un valor cuyo bit MSB esté seteado, por lo que todos los valores positivos (que son mayores que
cero) mantendrán este bit en 1. Cuando el número es negativo (menor que cero) siempre tendrá el dígito
MSB en cero. Esta peculiaridad hace que se considere al bit MSB como el bit del signo, siendo su regla
contraria a la del signo de la mantisa, pues para x positivo el bit MSB es 1 y cuando es negativo, cero. Se
puede comprobar que para los números positivos los n - 1 bits (exceptuando el signo) menos
significativos representan directamente el valor de x. Con respecto a los números negativos, los n - 1 bits
(exceptuando el signo) representan el complemento a dos de x.
Ejemplo 1.29: Para el ejemplo 1.28 compruebe que los números positivos representan exactamente al número del exponente y los negativos el complemento a dos cuando se exceptúa el signo
El exponente para –3d es:
0111101b
El cual es un número negativo al ser el MSB 0, si exceptuamos el signo, el valor del exponente es:
111101
Si le determinamos el complemento a dos:
000010
+ 1
_________
000011b = 3d
Por tanto se ha comprobado que el exponente es el complemento a dos de 3, o sea -3.
Cuando el exponente es 25 se representa como:
1011001b
Si se exceptúa el signo:
011001b = 25d.
Por lo que representa exactamente a la magnitud del exponente x.
Se puede concluir en la representación del exponente:
a-) Cuando el exponente x es positivo, el dato en la computadora se representa como en el ejemplo (1.29)
para e bits, (donde “e” es el número de bits para el exponente), siendo el más significativo 1 y los
restantes el valor de x.
b-) Cuando el exponente x es negativo, el bit MSB es cero y en los restantes bits se representa el
complemento a dos de x.
Este tipo de representación del exponente hace que los negativos disminuyan hacia la izquierda y los
positivos crezcan hacia la derecha, esto provoca que un incremento en el dato provoque un incremento en
el exponente y viceversa.
0 64 127 Valores de E
___________ ___________
|___________|___________|
-64 0 +63 Valores de x
Figura 1.12.- Comportamiento de la información numérica para un exponente de 7 bits.
En el caso de la mantisa, esta se puede representar de forma entera o fraccionaria.
1.6.1.- Coma flotante con mantisa entera
En este tipo de sistema, la coma se encuentra a la derecha del bit menos significativo de la mantisa; por
ejemplo, el número3,312510 es equivalente a 11,01012, que se representaría de la siguiente manera:
3312510-4
10 y 1101012-4
2
Considerando lo anterior, el rango positivo de representación será, para una base B = 2, (que es implícita):
El menor número positivo estará afectado por la menor mantisa y el menor exponente:
la menor mantisa, considerándola entera positiva, es:
000...001 = 1
y el menor exponente, cuyo valor real, suponiendo que está expresado en exceso, aplicando (1.15)
será:
x = E – 2(e – 1)
= -2(e – 1)
donde E = 000...000
por tanto el menor número positivo representable es:
1 2exp(-2(e – 1)
)
El mayor número positivo estará afectado por la mayor mantisa y el mayor exponente:
La mayor mantisa (incluyendo el signo) será, (y esto es válido para los tres sistemas de
representación: signo magnitud, complemento a uno y a dos):
M = 011...111 = 2(m – 1)
– 1
donde m es el número de bits para la mantisa.
El mayor exponente (E) es:
E = 111...111 = 2e – 1
Es necesario destacar que el exponente suele representarse de forma sesgada, lo que permite
representar exponentes negativos (sin reservar explícitamente un bit de signo), entonces el mayor
exponente (x) (aplicando (1.15)) es:
x = 2(e – 1)
– 1.
De lo anterior resulta que el mayor número positivo representable es:
(2(m – 1)
– 1) 2exp(2(e – 1)
– 1)
El rango negativo de representación, siempre hablando en términos de valor absoluto, cumple los
siguientes requisitos:
El menor negativo será la menor mantisa negativa (-1, al ser entera), afectada por el menor
exponente:
E = 000...000
donde x, si está representado de forma sesgada., responde a (aplicando (1.15)):
x = E – 2(e – 1)
= -2(e– 1)
en términos de valor absoluto representable, el menor negativo resulta ( de (1.14)):
-2[exp (-2(e – 1)
)]
El negativo de mayor valor tendrá la mayor mantisa y el mayor exponente, en este caso la mantisa
tendrá dos valores máximos, uno para el complemento a dos, otro para el complemento a uno y signo
magnitud, de esta forma el número se representa por:
– C2[exp(2(e – 1)
– 1)]
donde:
C = 2(m – 1)
– 1 para complemento a uno y signo magnitud.
C = 2(m – 1)
para el complemento a dos (recuérdese que el complemento a dos representa un número
negativo mas al tener una sola representación para el cero).
Aunque se puede representar la mantisa de tipo entera, se utiliza más la mantisa de tipo fracción.
1.6.2.- Coma flotante con mantisa fracción
En este caso se utiliza la mantisa fraccionaria, que es lo mismo que dividir por 2 (m – 1)
, haciendo que el
valor máximo de la mantisa sea 1.
Si se utilizan m bits para la mantisa, el rango de valores que esta puede representar es:
1 1 2 mMantisa (1.16)
Nótese que esta ecuación es en esencia igual a (1.13) (representa el rango de números fraccionarios con
signo), esto es debido a que al unir el bit del signo con la mantisa (que tiene el mismo significado que el
complemento a dos), se obtiene el mismo formato del número fraccionario con signo (de hecho la mantisa
es un número fraccionario con signo, cuyo bit del signo está separado y colocado junto al exponente).
El rango que puede representar un exponente viene dado por (ver fig. 1.12, para un exponente de 7 bits):
– 2(e – 1)
x 2(e – 1)
– 1 (1.17)
Ejemplo 1.30: Represente el valor 12.25 en formato de 7 bits
Los pasos para obtener los valores del signo, mantisa y exponente son:
a-) Dividir el número por la primera potencia de dos que lo supera y multiplicarlo para no alterar su valor.
12.25
12.25 = --------- 24 = 0.765625 2
4
16
Con esta operación se ha logrado transformar el número en una mantisa multiplicada por una potencia de
dos. El dividirse por la primera potencia de dos que lo supera garantiza el valor mínimo del exponente.
b-) Convertir a binario la mantisa.
Primero se convierte a octal.
0.765625 8 = 6.125 p1 = 6
0.125 8 = 1.00 p2 = 1
0.00 8 = 0.00 p3 = 0
Siendo la mantisa:
M = p1 p2 p3 = 610o = 110001000b
Considerando solo las 8 primeras cifras (se descartan los menos significativos):
M = 11000100
Como la mantisa es positiva, el bit del signo de la misma en formato binario es cero (recuérdese que ella
se representa en complemento a dos).
c-) Como el exponente es positivo (su valor es 4), entonces el bit más significativo del exponente es 1 y
los restantes seis bits representarán el 4 (000100b).
Por tanto, el valor 12.25 se representará en la computadora como:
01000100 11000100
Exponente Mantisa
Signo de la Mantisa
Ejemplo 1.31: Determine el valor decimal que representa el siguiente dato real
01000100 11000100
Exponente Mantisa
Signo de la Mantisa.
El valor de la mantisa es (incluyendo el signo):
011000100
Como es una fracción con signo, al aplicar (1.12) resulta:
7
8
880
12 2
2
i
i
i
M a a
M = (128 + 64 + 4)/256 = 0.765625
El exponente es positivo (su bit MSB es 1), por lo que los restantes bits representan directamente el
exponente que es:
000100b = 4d = x
Por tanto, el valor que se representa es:
0.765625 24 = 12.25
Nótese como esta solución coincide con el valor original en el ejemplo 1.30.
1.6.2.1.- La normalización
Como se puede apreciar en los ejemplos anteriores, la mantisa se expresa como una fracción, lo cual está
acorde con el uso común que se le da a la notación científica (donde 0.47e+4 es utilizado como forma
"normal" de notación y no 47e+2) donde la mantisa decimal pertenece al intervalo 0.1 a 0.999... 9. De
manera similar la mantisa binaria se encuentra en el rango de 0.100..0 a 0.111..1. En la mayoría de las
computadoras, la mantisa se mantiene en forma normal, continuamente ajustando la misma de manera tal
que el dígito más significativo (consecutivo al signo) sea siempre 1. A esto se denomina normalización, y
consiste en eliminar todos los dígitos nulos a la derecha de la coma y ajustar el exponente.
Ejemplo 1.32: Representar el número 2.0234375 normalizado, utilizando la mantisa de tipo fracción
El primer paso es dividir y multiplicar por 22, que garantiza una mantisa fraccionaria y un exponente
basado en potencia de dos:
(2.0234375/22) 2
2 = 0.505859375 2
2
El resultado de convertir la mantisa a binario, utilizando el sistema octal como intermediario es
equivalente a:
0.505859375 8 = 4.046875 p1 = 4
0.046875 8 = 0.375 p2 = 0
0.375 8 = 3 p3 = 3
que transformado a binario es:
403o = 100000011b = M
Nótese como el primer número de la mantisa es 1, por lo que ya está normalizado.
Para el exponente E, se aplica (1.15), para e = 7 bits y x = 2:
E = 2(e – 1)
+ x = 66d = 1000010b
Por lo tanto el número real en binario queda representado por:
0 1000010 100000011
Mantisa
Exponente
Signo de la Mantisa
Ejemplo 1.33: Representar el número 0.1328125 26 Como se parte de un número ya está en base dos, se convierte la mantisa a binario, mediante el sistema
octal:
0.1328125 8 = 1.0625 p1 = 1
0.0625 8 = 0.5 p2 = 0
0.5 8 = 4 p3 = 4
donde 104o = 001000100b, entonces el número sería, (despreciando los dos últimos ceros):
0.0010001 26
El próximo paso es normalizar la mantisa para que el MSB sea 1, por lo que se rota el punto decimal dos
posiciones a la derecha (equivalente a rotar el número binario a la izquierda), y el valor del exponente se
decrementa en dos, de lo que resulta:
0.10001 24
que se representa de la siguiente manera (para e = 7 bits):
s = 0; M = 10001 y E = 2(e – 1)
+ x = 68d = 1000100b
0 1000100 1000100
Mantisa
Exponente
Signo de la Mantisa
Otra posible solución para el problema del ejemplo es representar la equivalencia:
0.1328125 26 = 8.5
multiplicando y dividiendo por 24, garantiza la mayor mantisa fraccionaria, por lo tanto ya estará
normalizada:
(8.5 / 24) 2
4 = 0.53125 2
4
Convirtiendo el número a binario mediante el sistema octal:
0. 53125 8 = 4.25 p1 = 4
0.25 8 = 2 p2 = 2
42o = 100010b
el exponente sería, para e = 7 bits:
E = 2(e – 1)
+ x = 68d = 1000100b
y el número quedaría representado de la siguiente forma:
0 1000100 10001
Mantisa
Exponente
Signo de la Mantisa
Nótese como este último método evita el tener que ajustar el exponente.
1.7.- La aritmética en números reales
Los pasos para realizar las operaciones aritméticas elementales se describen a continuación.
Pasos generales para realizar las operaciones de suma y sustracción:
Antes de sumar y restar hay que lograr que ambos números con los que se opere tengan igual exponente:
1.- Comparar los exponentes, si son iguales no se requiere acción alguna.
2.- Seleccionar el número de menor exponente.
3.- Desplazar su mantisa a la derecha el número de lugares que corresponda a la diferencia de los
exponentes.
4.-Después de la suma o resta de las mantisas, el resultado toma el exponente mayor.
Ejemplo 1.34: Realice la siguiente operación
[5.25 102 – 50]
Los pasos para representar en punto flotante son:
1) Se convierten los valores a exponente base 2 (dividiendo y multiplicando por la potencia de dos más
próxima que supera al número). En nuestro caso:
525 = (525/210
) 210
= 0.5126953125 210
= N1
50 = (50/26) 2
6 = 0.78125 2
6 = N2
2) Se representan los datos en binario.
En este paso, se debe conocer el número de bits que serán usados para representar la mantisa. Para este
ejemplo, serán utilizados 11 bits (uno para el signo y diez para el dato).
a) Para calcular la mantisa, se utiliza el sistema octal como intermediario (incluyendo al signo):
0.5126953125 8 = 4.1015625 4
0.1015625 8 = 0.8125 0
0.8125 8 = 6.5 6
0.5 8 = 4 4
por lo tanto se representa 40648, cuyo equivalente en binario es (con el primer bit de signo):
M1 = (0) 1000001101b
de forma similar, para N2 se cumple:
0.78125 8 = 6.25 6
0.25 8 = 2 2
por lo tanto, m2 será 628, que en binario y con el bit de signo, es equivalente a:
M2 = (0) 1100100000b
b) Exponente:
Para la representación de un exponente de 7 bits, aplicando (1.15):
E = 2 (e – 1)
+ x
de lo anterior resulta:
E1 = 64d +10d =74d = 1001010b
de igual forma:
E2 = 64d + 6d= 70d = 1000110b
ambos números quedarían representados de la siguiente forma:
s E M
N1 0 1001010 1000001101
N2 0 1000110 1100100000
3) Se realiza el ajuste para la operación.
Para sustraer N1 - N2 hay que convertir los números a igual base, rotando a la derecha la mantisa (colocar
ceros a la derecha del punto), lo cual corresponde con incrementos en el exponente.
Convirtiendo el exponente 6 de N2 a exponente 10 (rotar cuatro veces) y adicionar 4 a E2, resulta:
Figura 1.13.- Representación de un número ( e=8, m=8) utilizando el estándar IEEE 754
Los componentes del formato IEEE 754 se caracteriza por:
Campo de signo: Lo constituye un bit para el signo ( cero para positivo y uno para negativo). Alterando
este bit, se altera el signo.
Campo del exponente: Es un dato de la forma entero sesgado, es decir el campo del exponente se obtiene
al sumar x + S, donde x es el valor decimal del exponente a representar y S en un sesgo, cuyo valor es
constante (de esta forma se pueden incluir exponentes positivos y negativos):
S = 2(e – 1)
– 1 (1.19)
Es importante destacar que la mayoría de los otros formatos utilizan como sesgo una unidad mayor, es
decir: S = 2(e – 1)
, tal y como se utiliza en la expresión (1.15).
Campo de la mantisa: Se emplea una mantisa fraccionaria y normalizada, de tal forma que el primer bit,
el más significativo, es implícito e igual a 1. La anterior consideración provoca que el rango de
representación de la mantisa se extienda en el siguiente intervalo:
1 M < 2 (1.20)
El uno considerado implícito para la mantisa ( que está ubicado a la izquierda del punto fraccionario del
exponente, tal y como muestra la fig. 1.14) no se almacena, por lo que la ALU (Unidad Aritmética
Lógica), deberá restituirlo cuando tenga que operar con él. Esta normalización se hace para no ir
perdiendo precisión en operaciones sucesivas, de forma que las cifras más significativas ocupen el mayor
peso, por lo que habrá que reajustar el exponente. Por lo tanto el valor de la mantisa será desde 1,00000....
hasta 1,11111..11 (en binario).
Indicadores especiales:
E = 255 y M 0: representa un “No a Number”, es decir, un número no válido. Se emplea para
indicar un resultado sin sentido (por ejemplo 0/0, 0, etc.).
E = 255 y M = 0: representa según el bit de signo s.
El número 0 se representa como E = 0 y M = 0 (existe cero positivo y negativo, dependiendo del valor
de s).
Cuando el exponente posee el valor 0, el 1 más significativo de la mantisa no viene implícito, el cual
permite atender el caso de ausencia de representación en coma flotante con mantisa normalizada. En
este caso se dice que la mantisa está denormalizada y el valor del sesgo es 2(e – 1)
– 2. De tal forma que
se representan números de la siguiente forma: (-1)s 2
-126 0.M para el sistema de representación
simple, obteniéndose 223
representaciones con separación uniforme en el intervalo [0, 2-126
]. En el
caso de un sistema en doble precisión (252
posibles combinaciones en el intervalo [0, 2-1022
]) la
representación de los números se hace de la forma: (-1)s 2
-1022 0.M . La mantisa M denormalizada
puede tomar valores entre 0.11...11 y 0. 00...01.
Ejemplo 1.37: Suponiendo n = 32 bits, e = 8 bits y m = 23 bits ( formato de almacenamiento en simple precisión), determine el valor de las siguientes representaciones
(a) 0 10000000 00000000000000000000000
En este caso:
s=0, E=128 (como E0 el número es normalizado) y M=0; por lo que se cumple:
( ) 1( 1) 1. [2 ] 1(1.0)2 2s E SM
Nótese que S=127, de aplicar (1.19) para e=8.
(b) 0 10000001 10100000000000000000000
En este caso:
s=0, E=129 y M=2-1
+2-3
=0.5+0.125=0.625; por lo que se cumple:
( ) 2( 1) 1. [2 ] 1(1.625)2 6.5s E SM
(c) 1 10000001 10100000000000000000000
En este caso:
s=1, E=129 y M=2-1
+2-3
=0.5+0.125=0.625; por lo que se cumple:
( ) 2( 1) 1. [2 ] 1(1.625)2 6.5s E SM
(d) 0 00000001 00000000000000000000000
En este caso:
s=0, E=1 y M=0; por lo que se cumple:
( ) 126 38( 1) 1. [2 ] 1(1.0)2 1.17 10s E SM
(e) 0 00000000 10000000000000000000000
En este caso:
s=0, E=0 ( el número es denormalizado por esta condición) y M=2-1
=0.5; por lo que se cumple:
126 126 127( 1) 0. [2 ] 1(0.5)2 2s M
(f) 0 00000000 00000000000000000000001
En este caso:
s=0, E=0 y M=2-23
; por lo que se cumple:
23 126 149( 1) (0 2 )(2 ) 2s
(g) 0 11111111 00100000000000000000000
Es equivalente a “número no válido” (NaN). Nótese que E=255.
(h) 1 11111111 10000000000000000000000
Es equivalente a “número no válido” (NaN).
(i) 0 11111111 00000000000000000000000
Es equivalente a infinito positivo (+).
(j) 1 11111111 00000000000000000000000
Es equivalente a infinito negativo (-).
(k) 0 00000000 00000000000000000000000
Es equivalente a cero positivo (+0).
(l) 1 00000000 00000000000000000000000
Es equivalente a cero negativo (-0).
Rangos en la representación:
Los valores máximos y mínimos representables en este tipo de formato, en términos del valor absoluto,
serán:
I.- Valor absoluto del número mayor: Este estará afectado por:
(a) La mayor mantisa, es decir 1.11...11:
Mmáx = 2 – 2-m
(b) El mayor exponente:
Emáx = 2S = 2e – 2
Entonces el número mayor, en términos de valor absoluto, será :
N = Mmáx 2Emáx
II.- Valor absoluto del número menor: Este quedará afectado por:
(a) La menor mantisa normalizada (1.00...00) o denormalizada (0.00...01):
Mmín_nor = 1
Mmín_denor = 2-m
(b) El menor exponente normalizado (E=1) y denormalizado (E = 0):
Emín_nor = E – S = 1 - 2(e – 1)
– 1= 2(e – 1)
– 2
Emín_denor = 2(e – 1)
– 2
Considerando lo anterior, el menor número en términos de valor absoluto será:
Nmín_nor = Mmín_nor 2Emín_nor
Nmín_denor = Mmín_denor 2Emín_den
En la tabla 1.14 se muestran los números mínimos y máximos representables para la precisión simple y
doble. La tabla 1.15 representa los valores dependientes de la precisión.
Mínimo número
Máximo número
Precisión Normalizado Denormalizado
Simple 2-126
1.17510-38
2
-232
-1261.40110
-45 (2-2
-23)2
1273.40310
38 2
-23 1.192 10
-7
Doble 2-1022
2.225 10-308
2-522
-1022
4.941 10-324
(2-2-52
) 21023
1.79810308
2-53 1.110 10
-16
Tabla 1.14.- Números mínimos y máximos representables para la precisión simple y doble
Si se analiza el formato de simple precisión existen cinco rangos numéricos que no se pueden representar,
ellos son:
1.- Números negativos menores a –(2-2-23
)2127
(desbordamiento negativo al máximo u overflow).
2.- Números negativos mayores a –2-149
(desbordamiento negativo al mínimo o underflow).
3.- Cero.
S = Sesgo ( ver expresion (1.19))
Signo Exponente (E) Mantisa (M) Valor
0 00..00 00..00 +0
0 00..00
00..01
:
11..11
Real denormalizado positivo
0.M x 2(-S+1)
0
00..01
:
11..10
XX..XX Real normalizado positivo
1.M x 2(E-S)
0 11..11 00..00 +Infinito
0 11..11
00..01
:
11..11
NaN
1 00..00 00..00 -0
1 00..00
00..01
:
11..11
Real denormalizado negativo
-0.M x 2(-S+1)
1
00..01
:
11..10
XX..XX Real normalizado negativo
-1.M x 2(E-S)
1 11..11 00..00 -Infinito
1 11..11
00..01
:
01..11
NaN
1 11..11 10..00 Indeterminado
1 11..11
10..01
:
11.11
NaN
Tabla 1.15.- Números representados por el formato binario
4.- Números positivos menores a 2-149
(desbordamiento positivo al mínimo o underflow).
5.- Números positivos mayores a (2-2-23
)2127
(desbordamiento positivo al máximo u overflow).
El desbordamiento al máximo significa que los números crecen por encima de un valor en que no es
posible representarlos. De forma similar, el desbordamiento al mínimo no se puede representar, pero este
es un problema menor en la medida en que se puede considerar una proximidad al cero.
Nótese que los valores extremos ocurren ( independientemente del signo) cuando el exponente alcanza su
máximo valor para números finitos ( 2127
para simple precisión) y la mantisa tiene todos sus bits en 1
(incluyendo el bit 1 de la normalización).
El estándar IEEE 754 considera cuatro formatos básicos: el de simple precisión, simple precisión
ampliada, doble precisión y doble precisión ampliada ( se eqpecificará aquí la simple y doble precisión).
Los diferentes formatos se diferencian en el número de bits del exponente y de la mantisa. Para el de
simple precisión e = 8 y m = 23, haciendo un total de bits n = 32 (incluyendo el signo), y la doble utiliza e
= 11 y m = 52, haciendo un total de bits n = 64 (incluyendo el signo). Es evidente que al tener un mayor
número de bits también se tiene mayor precisión a la hora de representar un número.
a-) Simple precisión:
Utiliza n = 32 bits, (e = 8 bits, m = 23 y el bit de signo). El sesgo S que hay que sumar es (aplicando
(1.19)) S = 127. Tiene las siguientes características:
- E = 255 y M 0, N no representa un número, (NaN)
- E = 255 y M = 0, N = (-1)s , (valores especiales)
- 0 < E < 255, N = (-1)s 2
E – 127 [1.M], (número normalizado)
- E = 0 y M 0, N = (-1)s 2
–126 [0.M], (número denormalizado)
- E = 0 y M = 0, N = (-1)s 0, (valor cero)
b-) Doble precisión:
Utiliza n = 64 bits, (e = 11 bits, m = 52 y el bit de signo). El sesgo S que hay que sumar es (aplicando
(1.19)) S = 1023. Tiene las siguientes características:
- E = 2047 y M 0, N no representa un número, (NaN)
- E = 2047 y M = 0, N = (-1)s , (valores especiales)
- 0 < E < 2047, N = (-1)s 2
E – 1023 [1.M], (número normalizado)
- E = 0 y M 0, N = (-1)s 2
–1022 [0.M], (número denormalizado)
- E = 0 y M = 0, N = (-1)s 0, (valor cero)
En la tabla 1.16 se muestran los bits de precisión, exponentes máximos y mínimos y el sesgo del
exponente.
En la tabla 1.17 se muestra como se almacena los datos de tipo real en el estándar IEEE 754, para simple
y doble precisión con palabras de 16 bits.
Precisión
Simple Doble
m 23 52
Emáx 127 1023
Emín -126 -1022
Sesgo (S) 127 1023
Tabla 1.16.- Características de la precisión simple y doble
Simple precisión
s Exponente (8 bits) Mantisa (7 bits)
Mantisa (16 bits)
Doble precisión
s Exponente (8 bits) Mantisa (7 bits)
Mantisa (16 bits)
Mantisa (16 bits)
Mantisa (16 bits)
Tabla 1.17.- Almacenamiento de datos de tipo real para simple y doble precisión en palabras de 16
bits
Ejemplo 1.38: Obtener la representación del número N = -273.2 105 según la norma IEEE 754, para datos en simple precisión Como es simple precisión entonces n = 32, e = 8, m = 23 y B = 2. Los pasos para realizar la conversión
son los siguientes:
(a) Se determina el número de cifras hexadecimales para la mantisa.
mh = m/4 = 5.75 6 cifras hexadecimales, pero conviene obtener ocho cifras para redondear y truncar.
(b) Se normaliza el número para que posea cero en la parte entera ( mantisa fraccionaria).
Esta conversión permite simplificar el método de conversión, utilizando sucesivas multiplicaciones por la
base ( en este caso se utilizará base 16, hexadecimal).
N = -273.2 105= -0.2732 10
8
(c) Se convierte el exponente de base 10 a base 2.
Para realizar este paso, se considera la siguiente equivalencia:
)2log(
)10log()2log()10log(210
dxxdxd (1.21)
De aplicar la anterior expresión para el ejemplo resulta:
57542476.26301029995.0/8)2log(
)10log(8x
Por tanto la conversión de base 10 a base 2 equivale a:
-0.2732 108 = -0.2732 2
26.57542476
(d) Se convierte el exponente base 2 a un número entero.
Este paso es evidente, en la medida en que el exponente se representa como entero con determinado
sesgo.
Operando, resulta:
-0.2732 1026.57542476
= -0.2732 20.57542476
226
= -0.407099724 226
(e) Se convierte la mantisa a hexadecimal.
0.407099724 16 = 6.513595584 6H
0.513595584 16 = 8.217529344 8H
0.217529344 16 = 3.480469504 3H
0.480469504 16 = 7.687512064 7H
0.687512064 16 = 11.00019302 BH
0.00019302 16 = 0.003088384 0H
0.003088384 16 = 0.049414144 0H
El número con mantisa fraccionaria responde a:
-0.407099724 226
= -0.6837B00H 226
(f) Se realiza la normalización y el redondeo de la mantisa.
El equivalente binario de la mantisa es:
-0. 0110 1000 0011 0111 1011 0000 0000 226
Al normalizar, resulta:
-1. 1010 0000 1101 1110 1100 0000 00 224
Como las últimas tres cifras binarias es inferior a 100, resulta:
-1. 1010 0000 1101 1110 1100 000 224
(g) Se realiza la representación del exponente.
Como e=8, el sesgo es 127, por tanto:
E = x + S = 24+127 = 151d = 10010111b
(h) Se determina el signo.
Como el número es negativo, entonces s=1.
El número se representaría en formato IEEE 754 de la siguiente forma:
Signo exponente mantisa
1 10010111 1010 0000 1101 1110 1100 000
Comprobación:
Aplicando la conversión binaria a flotante resulta: