Documente Academic
Documente Profesional
Documente Cultură
W = a n X n + a n 1X n 1 + a n 2 X n 2 + a n 3 X n 3 ..... ..... a 2 X 2 + a 1X 1 + a 0 X 0 + + b1 X -1 + b 2 X -2 + b 3 X - 3 + b 4 X - 4 + .... .... b m X - m donde, X es la base numrica, W es una cantidad numrica expresada en la base numrica X. a n , a n -1 , a n - 2 , ....a 2 , a 1 , a 0 , b1 , b 2 , b 3 , ..... son los elementos del conjunto de nmeros de esa base numrica. m, n son elementos del conjunto de los nmeros naturales.
Por ejemplo, en la base numrica
3 2
(ecuacin 1)
5601,3407 = 5 10 + 6 10 + 0 10 1 + 1 10 0
Un accidente evolutivo ha llevado a los seres humanos a usar la base numrica X=10. Esto significa que en base 10 expresamos cualquier cantidad numrica real y positiva, usando la forma indicada en la ecuacin 1. Si la cantidad es negativa, introducimos un smbolo adicional con el fin de indicar que la cantidad es menor que cero. En los casos prcticos buscamos los valores apropiados para n y m, segn el valor y segn la cantidad de cifras significativas enteras y fraccionarias que deseamos expresar. Un asunto importante a destacar se refiere a los siguientes dos hechos, comunes para cualquier base numrica:
I) Desplazar las cifras de la cantidad numrica un lugar a la derecha, manteniendo la posicin del separador fraccionario, equivale a dividir la cantidad por la base numrica. Si esta base es 10, entonces, W = 2345,6789 Z=234,56789 entonces Z= W/10. Si es necesario completar la cantidad de dgitos enteros, se puede rellenar con 0 (Z = 0234,56789). Desplazar las cifras de la cantidad numrica un lugar a la izquierda, manteniendo la posicin del separador fraccionario, equivale a multiplicar la cantidad por la base numrica. Si esta base es 10, entonces, W = 2345,6789 Z=23456,7890 entonces
II)
Z= W*10. Si es necesario completar la cantidad de dgitos fraccionarios, se rellena con 0 (Z=23456, 7890).
Entonces, la inclusin de uno o ms ceros tanto al lado izquierdo de la expresin (lado de los enteros) como al lado derecho (lado de la fraccin) no aportan a la expresin. La demostracin para los hechos planteados I) y II) anteriormente, es simple. Basta con dividir y multiplicar ambos lados de la ecuacin 1 por la base numrica X. Entonces se deduce las expresionas para W/X y para W*X. Es importante tomar nota que los dos hechos anotados son vlidos para cualquier base numrica.
Consideremos ahora la transformacin de una cantidad decimal en binario. Para ello recordamos que una cantidad cualquiera W, expresada en este caso en base 10, puede ser representada en base 2,
W = a n 2 n + a n -1 2 n -1 + a n - 2 2 n - 2 + ....... + a 3 2 3 + a 2 2 2 + a 1 21 + a 0 2 0 donde , a n , a n -1 , a n - 2 , .... , a 3 , a 2 , a 1 , a 0 pueden ser 0 o 1, elementos smbolos del sistema numrico de base 2, y n es un nmero natural.
La idea es simple; sin embargo, el problema es como deducir los dgitos 1 o 0, y su posicin relativa en la representacin binaria. Para ello recordamos el hecho I) enunciado anteriormente, el que dice que si desplazamos la cantidad un lugar a la derecha, equivale a dividirla por la base numrica. Si la base numrica es 2, entonces este desplazamiento a la derecha representar una divisin por dos. Esta divisin por 2 puede producir un resto 1 si el dividento es impar, o un resto 0 si la cantidad es par; note que estos restos 0 o 1 corresponden justamente a los elementos del sistema numrico binario. Lo expuesto se muestra en la ilustracin adjunta, usando el mismo nmero 17189 anterior. Notar que estos desplazamientos sucesivos botar siempre o un 0 o un 1, los que corresponden al resto de la divisin por 2. Por lo tanto, para transformar una cantidad decimal en binaria, bastar con dividir sucesivamente por dos, tomando nota en cada caso de los restos que se producen. Dicho de otra manera, el nmero binario est constitudo por los restos que produce la divisin 3
sucesiva de la cantidad decimal, por 2. De esta manera entonces, podemos deducir la cantidad binaria correspondiente con el nmero 17189, usado para ilustrar estas ideas.
Apreciamos que la primera divisin identifica a travs del resto 1, al bit menos significativo, el que tambin identifica a una cantidad IMPAR. Por lo tanto desechando ese bit (el bit botado de la traslacin a la derecha) queda la cantidad correspondiente al cuociente de la divisin por 2, el 8594 en este caso. Volvemos a dividir por dos, y se produce el resto 0, identificacin de cantidad PAR. Y as, seguimos hasta lograr un cuociente nulo, el que identifica que no ser posible seguir particionando la cantidad en potencias de dos. Entonces, finalmente conclumos lo expuesto anteriormente, y que repetimos a continuacin:
17189 = 100 0011 0010 0101B Lo anteriormente expuesto define tambin el mtodo para realizar una transformacin de binario a decimal. Basta con ello multiplicar cada bit por la potencia de 2 que corresponde a su posicin relativa en la expresin binaria, para luego sumar los componentes resultantes. De esta manera, por ejemplo, 100101B = 1*32 + 0*16 + 0*8 +1*4 + 0*2 +1*1 = 32 + 4 + 1 = 37
entonces un smbolo por cada cuarteto de bits, y dado que 4 bits dan lugar a 16 combinaciones, el sistema numrico tendr 16 smbolos. De all su nombre de sistema hexadecimal o sistema numrico de base 16, el que se ilustra en la tabla 1.2.
En este sistema se usan los mismos smbolos del sistema numrico decimal, es decir, el 0, 1, 2 , 3 , 4 , 5 , 6 , 7 , 8 y 9. Luego, para representar los dgitos correspondientes al 10, 11, 12, 13, 14 y 15 (con lo que se completan 16 smbolos) se hace uso de las primeras letras del abecedario (A, B, C, D, E, F), no interesando si son maysculas o minsculas. De esta manera, 10 = AH = aH = ah (h=H, indica base hexadecimal), 11 = BH, 12 = CH, 13 = DH, 14 =EH, 15 = FH. Con el propsito de evitar confusiones con expresiones del tipo BACEH por ejemplo - la que pudiera significar una cantidad expresada en hexadecimal, o pudiera representar una palabra, se acostumbra a anteponer un 0 en una cantidad numrica hexadecimal que comienza con una letra. De esta manera, cuando expresamos 0BACEH, no hay dudas que nos estamos refiriendo a una cantidad numrica. Entonces, la cantidad binaria anterior, puede ser expresada en forma en su forma hexadecimal, totalmente equivalente,
que sern expresados en hexadecimal. De esta manera, por ejemplo, la cantidad decimal 147, 157: 16 = 9, resto 13 = 0DH 9 : 16 = 0, resto 9
Al dividir por 16 hay que realizar mucho menos divisiones. Y si recordamos la tabla anterior que relaciona cuartetos de bits con sus smbolos hexadecimales, podremos hacer una transformacin de decimal a binario, pasando por hexadecimal, mucho ms rdidamente. As, 157 = 9DH = 1001 1101B La transformacin de una cantidad hexadecimal en decimal, tambin pudiera hacerse de dos maneras. La primera es pasando por la transformacin binaria, para luego transformar el nmero binario en 2 1 0 2 1 0 0 B63H = 0BH 16 + 6 16 + 3 16 = 11 16 + 6 16 + 3 16 = decimal, a travs de 2816 + 96 + 3 = 2915 l a s ponderacio nes de las potencias de dos. Por ejemplo, si queremos transformar 0B63H, observamos (o recordamos) la tabla anterior, y deducimos que 0B63H = 1011 0110 0011B = 2048 + 512 + 256 + 64 + 32 + 2 + 1 = 2915. Otra forma consistir en desarrollar la expresin hexadecimal en la forma que nos da la ecuacin 1 de este captulo, es decir,
4.294.967.295 = 0FFFF FFFFH = 1111 1111 1111 1111 1111 1111 1111 1111B. En la intimidad del computador, no existe posibilidad alguna de usar los signos "+" o "-" para indicar si una cantidad es positiva o negativa. De hecho, el computador slo trabaja con niveles lgicos "0" o 1", por lo que la expresin del signo slo ser posible haciendo uso de uno de estos smbolos. Por lo tanto, el signo ser asignado por medio de un bit.
Otro aspecto que debemos tener en cuenta es el hecho que con una cantidad limitada de bits podemos expresar una cantidad limitada de valores. En las cantidades de 8 bits SIN SIGNO es posible expresar desde el 0 hasta el 255, y nada ms. Por lo tanto, si deseamos usar los mismos 8 bits para expresar cantidades CON SIGNO, slo podemos hacer uso de ese mismo conjunto de combinaciones posibles, con lo que tendremos 127 valores positivos, 128 valores negativos, ms el 0. Apreciar que el total de valores es 256. No podemos contar con ms de eso. En breve mostraremos que en realidad son 128 valores positivos, ya el computador considera el 0 como un valor positivo; en un ambiente de bivalencia (0 / 1) no pueden existir los tres estados positivo negativo y cero, por lo que necesariamente debe asignarse a este ltimo elemento un signo, aunque el sentido de esto sea muy discutible. Lo mismo podemos apreciar para el caso de la expresin de cantidades numricas CON SIGNO mediante 16 bits. La cantidad de combinaciones posibles son 65.536. Por lo tanto, al asignar signo, tendremos 32.767 valores positivos, 32.768 valores negativos, ms el 0 (total 65.536). La manera de constituir el conjunto de valores binarios CON SIGNO sigue la misma lgica que la usada para constituir el conjunto de las cantidades sin signo. Para construir las combinaciones posibles, los bits menos significativos cambian 1 vez por valor ( 2 elevado a 0), los bits de la siguiente columna cada dos veces ( 2 elevado a 1 ), luego cada cuatro veces ( 2 elevado a 2 ), cada ocho... etc.. Se muestra esta lgica en la Tabla 1.3. En la tabla anterior apreciamos que en el caso de trabajar con 8 bits alcanzaremos desde -128 hasta +127 SIN REPETIR COMBINACION ALGUNA.. Apreciamos adems el hecho que el 7
BIT MAS SIGNIFICATIVO DE LAS CANTIDADES POSITIVAS ES SIEMPRE 0. En cambio el BIT MAS SIGNIFICATIVO DE LAS CANTIDADES NEGATIVAS ES SIEMPRE 1. En consecuencia, el bit ms significativo representa el signo, siendo 0 si la cantidad es + y 1 si la cantidad es -. De esta manera, a nivel de 8 bits, si representamos cantidades con signo, la cantidad se expresa con 7 bits y un bit identifica el signo. A nivel de 16 bits, tendremos 15 bits para representar la cantidad y un bit, siempre el ms significativo, para indicar el signo. Note que 27 = 128 (el cero se considera +) y 215 = 32.768. Se aprecia adems que el CERO es considerado como una cantidad positiva, ya que su bit ms significativo es siempre 0. Es posible deducir a travs de la tabla que si deseamos conocer el valor negativo de un nmero binario (o hexadecimal) slo debemos complementar ese valor y luego sumarle 1. Por el complemento de un dgito entendemos el valor que hay que sumarle a cada dgito para alcanzar el dgito que representa el valor del smbolo mximo de la base numrica 8o la base numrica menos 1). De esta manera, el complemento del 0 es el 1 ya que 0+1=1, y del 1 es el 0, en la base numrica 2. Por otra parte, el complemento del 8 es el 7 (8+7=15), del 2 es 0DH (2+0DH=0FH), del 0AH es el 5 (0AH+5=0FH), etc., en la base numrica hexadecimal. En la base numrica decimal, el complemento del 3 es el 6 (3+6=9), el complemento del 5 es el 4 (5+4=9), del 9 es el 0, etc..
Veamos los siguiente ejemplo: - 99 = - 63H = - 0110 0011B (note que 99 = 63H = 0110 0011B) - 0110 0011B = 1111 .... 1111 1001 1100B + 1 = 1111 .... 1111 1001 1101B = ....FFFFF...FFF9DH Notar que hemos complementado los bits (los ceros subentendidos a la izquierda se han transformado en 1s), y se le ha sumado una unidad. Note que el bit 7 (ms significativo a nivel de 8 bits) resulta 1. De la misma manera, si tenemos una cantidad con signo a nivel de 16 bits igual a: 8A52H = 1000 1010 0101 0010B (debemos entenderla como FFF...F8A52H), ser reconocida como cantidad NEGATIVA ya que su bit ms significativo es 1. Para conocer el valor absoluto que representa (o su imgen positiva) deberemos restarle una unidad para luego complementar. Entonces, _______ (8A52 -1)H = 75AEH (cada dgito complementado a 0FH) o trabajado en binario:
_____________________ (1000 1010 0101 0010 - 1)B = 0111 0101 1010 1110B (cada dgito complementado a 1) Entonces, a nivel de 16 bits, - 75AEH = 8A52H = - 30.126
En base a lo anteriormente dicho, nos queda an por discutir lo siguiente: Si tenemos un valor en binario (o Hex), necesitaremos conocer que representa (en decimal, por ejemplo). Esto puede resultar indefinido si no se especifica claramente si se trata de una cantidad CON SIGNO o una cantidad SIN SIGNO. Veamos por ejemplo, a nivel de 8 bits, la cantidad 0010 1110B = 2EH . Esta cantidad representa el 46 decimal y puede ser una cantidad CON SIGNO como una cantidad SIN SIGNO. Apreciar que su bit ms significativo es un 0, por lo que se trata de una cantidad positiva y menor de 127. No existe ambiguedad alguna si la cantidad es igual o menor a 127. En cambio, a nivel de 8 bits, la cantidad 1001 1000B = 98H es ambigua a menos que
0, 4140625=
-1
0, 25 +
-2
0,125+
-3 -4
0, 03125+
-5 -6
0, 0078125=
= ( 0 * 2 ) + ( 1* 2 ) + ( 1* 2 ) + ( 0 * 2 ) + ( 1* 2 ) + (0 * 2 ) + ( 1* 2-7 )
especifiquemos claramente si se trata de una cantidad CON o SIN Signo. Si la cantidad es SIN Signo, representa el nmero 152 (recuerde que podemos tener hasta el 255). En cambio si se especifica que la cantidad es Con Signo, reconoceremos una cantidad negativa ya que el bit ms significativo es 1 y se tratar del valor - 104 (resto 1 y complemento).
Notaremos que a medida que el exponente de 2 se hace ms bajo (exponente ms negativo) el aporte a la cantidad es cada vez menor, con lo que los dgitos binarios que se ubican ms a la derecha son cada vez menos significativos. La descomposicin se realiza multiplicando cada vez el producto por 2 , menos 1 (si el producto anterior es mayor que uno ), o el producto por 2 ( si el producto anterior es menor que 1) e identificando la parte entera del producto resultante. Si esta parte resultante es mayor que 1, el dgito binario correspondiente es 1. En cambio si es menor que 1, el dgito es 0. Este procedimiento resulta ms simple ilustrarlo a travs de un ejemplo que explicarlo o justificarlo en detalle. Sin embargo, la justificacin del procedimiento se encontrar trabajando los elementos de sistemas numricos expuestos en este captulo. Veamos con nuestro caso ilustrado (valor decimal 0, 4140625): 0, 4140625 * 2 0, 828125 * 2 0, 65625 * 2 0, 3125 *2 0, 625 *2 0, 25 *2 0, 5 *2 Entonces: 0, 4140625 = 0, 0110101B ( o tambin 0, 0110101000...00000B ) Entonces, una cantidad decimal como 435, 4140625 se puede representar en binario transformando la parte entera, 435 = 1 1011 0011B, y luego la parte decimal, segn se ha mostrado. Es conveniente declarar - a esta altura - que esta forma de representacin no es usual, pero tiene el mrito que facilitarnos la comprensin sobre el formato de PUNTO FLOTANTE. Entonces, 435, 4140625 = 0001 1011 0011 , 0110 1010 B Apreciamos que la precisin que consigamos slo depende de la cantidad de bits que se usen para expresar tanto la cantidad entera como la cantidad fraccionaria decimal. Si usamos por ejemplo 16 bits para la cantidad entera y deseamos adems representar cantidades CON SIGNO (bit ms significativo ser el signo) entonces tendremos valores entre 32.767 y - 32.768. Si adems usamos por ejemplo - 24 bits para representar la cantidad fraccionaria, tendremos la posibilidad de contar con una precisin a 2 elevado a -24 = 0,00000005960464477539. = 0, 828125 = 1, 65625 = 1, 3125 = 0, 625 = 1, 25 = 0, 5 = 1 ------> 0 ------> 1 ------> 1 ------> 0 ------> 1 ------> 0 ------> 1
10
(ecuacin 1.2 )
W = K * 2y
donde "W" es la cantidad numrica decimal, "K" es la mantisa y el exponente es "y" de la base 2. La manera de presentar esta informacin en binario, se muestra en la figura 1.1, la que constituye la representacin de una forma de Punto Flotante o formato Real.
De esta representacin numrica existen varios subformatos para nmeros, a saber: Real Corto: 1 bit de signo, 8 bits para el exponente y 23 bits para la mantisa (32 bits)
Real Largo: 1 bit de signo, 12 bits para el exponente y 51 bits para la mantisa (64 bits) Real Temporal: 1 bit de signo, 16 bits para el exponente y 63 bits para la mantisa (80 bits) (El caso representado anteriormente) Para llevar la cantidad decimal a la forma expuesta y luego al formato en punto (o coma) flotante, se procede segn se indica a continuacin. Con el fin de ilustrar, se trabajar con la misma cantidad usada anteriormente. Recordemos que ya se justific que, 435, 4140625 = 0001 1011 0011, 0110 1010B En primer lugar se convierte el entero decimal a binario, por lo que 435 = 0001 1011 0011B 11
Luego se convierte la cantidad fraccionaria decimal a binario, con lo que 0, 4140625 = 0, 0110 1010B A continuacin se desplaza la coma binaria tantos lugares a la izquierda (exponente de 2 positivo) o a la derecha (exponente de 2 negativo) de forma de dejar la cantidad expresada a partir de un entero ( 1, ...). Segn nuestro ejemplo, 435, 4140625 = 0001 1011 0011, 0110 1010B = 1, 1011 0011 0110 1010B * 2 ** 8 En el formato de punto (o coma) flotante el exponente de la base de 2 se normaliza de forma de dejar implcito su signo. Si representamos el valor como un REAL CORTO ( 32 bits ) entonces se procede a sumar a exponente 7FH = 127 = 0111 1111B. En el presente caso 7FH+8 = 87H = 1000 0111B. El valor entero resultante (1) no se representa en el formato ya que es subentendido. Finalmente entonces, para 1 bit de signo, 8 bits para el exponente y 23 bits para la mantisa (32 bits),
SIGNO (1 bit) 0
La cantidad 435, 4140625 expresada en binario, haciendo uso de la forma Punto (coma) Flotante y como Real Corto, queda igual a 0100 0011 1101 1001 1011 0101 0000 0000B (se agrupan en cuartetos para mayor claridad).
El siguiente ejemplo intenta clarificar ms la transformacin: El siguiente valor representa una cantidad numrica en la forma Real Corto. Se trata de identificar la cantidad decimal correspondiente. W = C19B0000H = 1100 0001 1001 1011 1000 0000 0000 0000B en forma Real Corto. Con el fin de identificar mejor los componentes de la forma (Signo, Exponente y Mantisa) se ordenar segn se expone (1bit, 8 bits y 23 bits): W = 1 1000 0011 0011 0110 0000 0000 0000 000B en forma Real Corto. Entonces, se deduce que la cantidad es negativa (1 como ms significativo), el exponente (y) de la base 2 es 131 = 83H, 131- 127 = 4 y que la mantisa (K) es 1, 0011 0110 0000 .....B (note que se ha adicionado el 1). 12
El entero es 10 011B = 19, que, siendo negativo corresponde al entero -19. La fraccin decimal contiene componentes 0,25 + 0,125 = 0,375, o dicho de otra manera, la mantisa K es igual a 1 + 2**(-2) + 2**(-3). Entonces finalmente, W = - 19, 375
Alcance de los datos segn el tipo de datos: La Tabla 1.4 siguiente resume los datos tpicos existentes y sus alcances.
Es de notar que en funcin de los alcances detallados en la tabla para la forma Real, se deduce que existir siempre una imprecisin o falta de exactitud, ya que la forma no puede especificar valores muy pequeos y valores muy altos. La ilustracin siguiente explica lo expuesto.
13
Por ltimo cabe sealar en este tema, que estos formatos son empleados por las Unidades de Punto Flotante de los Procesadores modernos.
14
Para transformar una cantidad numrica desconocida a BCD, basta con dividir sucesivamente por 10, segn se explica con ms detalles a continuacin, y se toma nota de los restos producidos. Bsicamente, los restos corresponden a las unidades, las que se sitan entre 0 =0000B y 9=1001B. Sea el nmero 728 = 10 1101 1000B = 2D8H; entonces, 728 : 10 = 72 resto 8 72 : 10 = 7 resto 2 7 : 10 = 0 resto 7 y en los restos 7, 2 y 8 identificamos los dgitos correspondientes a esa cantidad. Por lo tanto,
Es de notar que usando 8 bits, es posible representar en BCD desde el 0 hasta el nmero 99 (0000 0000BCD .... 1001 1001BCD). En cambio, en binario - llamado en ocasiones tambin binario natural - es posible reoresentar desde el 0 hasta el 255 (00000000B ..... 1111 1111B). Para representar el 100 en BCD necesitamos un cuarteto por cada cifra decimal, entonces 12 bits, a saber 0001 0000 0000BCD. Con 16 bits, podemos representar en BCD desde el 0 = 0000 0000 0000 0000, hasta el 9999 = 1001 1001 1001 1001BCD. El valor mximo que es posible representar con cada cuarteto de bits, es el nmero 9. Por lo general, cuando se representa un dgito decimal usando 8 bits, ste se menciona como un DECIMAL DESEMPAQUETADO. Por ejemplo, por decimales desempaquetados, 0000 0110BCD = 6, 0000 0100BCD = 4, 0000 0111BCD = 7, ... etc.. Se aprecia que un Decimal Desempaquetado siempre tiene su cuarteto ms significativo de bits - aquellos que estn al lado ms a la izquierda - igual a 0. Sin embargo, en 8 bits es posible contener dos cifras decimales, una en el cuarteto menos significativo, y la otra en el cuarteto ms significativo. Cuando tenemos una situacin de este tipo, tal representacin se le conoce como DECIMAL EMPAQUETADO. Por ejemplo, son Decimales Empaquetados 33 = 0011 0011BCD, 67 = 0110 0111BCD, 81 = 1000 0001BCD. Un par de Decimales Desempaquetados pueden ser empaquetados en un slo dato de 8 bits. Para ello, aquel Decimal Desempaquetado que decidimos figure como cuarteto ms significativo, se trata de manera que su cuarteto menos significativo quede como ms significativo; con ello entonces tendremos 0000 como cuarteto menos significativo. Para conseguir esto, se puede realizar un desplazamiento o rotacin de bits - cuatro veces - hacia la izquierda o derecha, o bien, se puede proceder por medio de un SWAP o intercambio de cuartetos. Una vez realizado lo anterior, se 15
realizar una suma lgica (OR) con el otro decimal desempaquetado. A modo de ejemplo, sean los decimales desempaquetados siguientes: 3 = 0000 0011BCD, y 7 = 0000 0111BCD. Entonces, 0000 0011BCD=03, y se intercambian los cuartetos y quedar 0011 0000BCD=30, para luego hacer una suma lgica con 0000 0111BCD=07, resultando 0011 0111BCD = 37, que es un Decimal Empaquetado. Tambin es posible plantear un proceso para desempaquetar un Decimal Empaquetado. Para ello se almacenar temporalmente. Luego se realizar una operacin de tipo AND con 0000 1111B, con lo que hemos determinado un Decimal Desempaquetado. Luego recuperamos desde el almacn temporal el Decimal Empaquetado, intercambiamos sus cuartetos - operacin llamada SWAP de cuartetos, o tambin puede ser hecho por rotacin o desplazamiento de bits - para conseguir el nuevo Decimal Desempaquetado repitiendo la operacin AND con 00001111B. Es de notar que esta operacin NAND con la mscara 0000 1111B = 0FH conserva el cuarteto menos significativo anulando el cuarteto ms significativo. A modo de ejemplo, sea el Decimal Empaquetado 82 = 1000 0010BCD.
Entonces, (1000 0010BCD=82) AND ( 0000 1111B=0FH) = (0000 0010BCD = 02) 1000 0010BCD=82, se intercambian cuartetos y queda 0010 1000BCD = 28, para luego hacer (0010 1000BCD=28) AND (0000 1111B=0FH) = (0000 1000BCD = 08). Las operaciones AND y OR mencionadas corresponden a operaciones que se realizan entre los bits de posiciones correspondientes. El proceso que se realiza mediante el AND se denomina enmascarar con 0FH, y el 0FH es designado como la mscara; corresponde a un dato que permite ver o conservar algunos bits - aquellos a los que se le asigna 1 en la posicin deseada - y no ver o anular otros, los que corresponden a aquellos que se le asigna 0 en la posicin deseada.
16
b) Un Byte = 8 bits:
17
f) Decimal Desempaquetado:
g) Decimal Empaquetado:
_____________________________________________________________________________________
18
1.1.-
Transformar las siguientes cantidades a su expresin en base hexadecimal y binaria (evitando el uso de una calculadora electrnica). A) 8192 E) 16383 B) 256 F) 65.535 C) 1.048.576 G) 1023 D) 4095 H) 511
1.2.-
Transformar los siguientes valores a su expresin en base decimal. A) 2222H E) 1EE0H B) 0110 0101 B C) 0A00H G) 1000H D)1111 0000 B H) 0110 0100 B
1.3.-
Los valores siguientes corresponden a cantidades expresadas en BCD. Expresar esos valores Decimal, Hexadecimal y Binario (natural) en, ii) 1001 1001 BCD iii) 0001 0010 0011 0100 BCD
1.4.-
Indicar a que valores decimales corresponden las siguientes expresiones considerando que, A) El valor pertenece al conjunto de los nmeros de 8 bits SIN SIGNO, y B) El valor pertenece al conjunto de los nmeros de 8 bits CON SIGNO. I) 0111 1111 B II) 1000 000 B III) 1010 0000 B V) 9AH VI) 3EH IV) 0100 1111 B VIII) 08H
VII) 0C5H
1.5.-
Explicar el motivo por el cual la siguiente expresin numrica que se dice ser en BCD, es errnea: 0110 1001 0001 1011 0001 0011 BCD
19
Sn = 2 -1 + 22 + 23 + 2 4 + ....+ 2n =
2
n= 1
=1
Ec.1
Para demostrar esta ecuacin 1 basta dividir Sn por 2, para luego restar de la ecuacin original. Adems, a partir de esta ecuacin 1 demostrada, se puede establecer que, para n 2 2 + 23 + 2 4 + 2-5 + .... + 2n = 1 2-1 = 2 1 2 3 + 24 + 2 -5 + .... + 2n = 1 2-1 2 2 = 22 2 4 + 2-5 + .... + 2n = 1 2-1 22 23 = 23 etc.. Entonces, a partir de lo anterior, es posible establecer para un valor entero j que, 1- 2 j = 2-1 + 2 2 + 23 + .... +2-j para j 1, j N Ec. 2
Esta ecuacin 2 se puede demostrar aplicando induccin matemtica (para k=1, y para k+1). Usando la ecuacin 2 se deduce que si es conocida la cantidad de bits de que se dispone para expresar una fraccin decimal, se puede determinar muy simplemente el valor mximo de fraccin decimal que se puede expresar con esa cantidad de bits.
Entonces, 1.6.1.1.6.2.1.6.3.1.6.4.Demostrar la ecuacin 1. Determinar la cantidad fraccionaria mxima que es posible representar con 8 bits. Usando 8 bits, mostrar el cumplimiento de la ecuacin 2. Argumentar, para el caso que se quisiera representar el valor 1, mediante la expresin de una fraccin decimal, cuntos bits seran necesarios ? 1.6.5.- Determinar la cantidad fraccionaria mxima que es posible representar con a) 16 bits, y b) 20 bits. 1.7.Una cantidad numrica usa 32 bits en la memoria de un computador. Los 16 bits ms significativos expresan (sin signo) los enteros, y los 16 bits menos significativos expresan la fraccin decimal de la cantidad. La cantidad numrica es: 1101 0011 1110 0001 0101 0110 1111 0000 B Determinar el valor numrico decimal que representa.
20
Se cuenta con 16 bits para expresar una cantidad numrica, y se usa 8 bits para expresar la parte entera y 8 bits para expresar la parte decimal.
A) B)
Indicar el valor mximo sin signo, que se puede expresar. Anotar el word (16 bits) en binario y hexadecimal, que expresa el dato decimal 193,089050293 usando el octeto ms significativo para representar la parte entera.
1.9.-
a) Expresar el nmero decimal 435 en base numrica 8. b) Transformar a su expresin en decimal el valor 444 Octal (base 8). c) El valor 796 Octal no puede ser una expresin numrica en base 8. Explicar el motivo.
2.0.-
a) Transformar el valor decimal (- 2471,6640625) a su expresin en formato de punto flotante, Real Corto. b) La expresin numrica 00C34E2280H expresa una cantidad en el formato de punto flotante, Real Corto. Determinar ese valor en su forma decimal.
2.1.-
Contamos con una herramienta (ver Nota al final de este listado) que nos permite realizar transformaciones de valores decimales a su formato punto flotante. Al usar esta herramienta conseguimos las transformaciones para los valores indicados. Compruebe que son correctos. Formato Punto Flotante Real corto, HEX 3F7E4C8B BF45D3E6 3EC425FE BF45D3E6 Formato punto flotante Real corto, BIN 0011 1111 0111 1110 0100 1100 1000 1000 1011 1111 0100 0101 1101 0011 1110 0110 0011 1110 1100 0100 0010 0101 1111 1110 1011 1111 0100 0101 1101 0011 1110 0110
2.2.-
A) Compruebe que la transformacin de la fraccin decimal 0.5678 a binario produce 0,1001 0001 0101 1011 0111 0000B (24 bits) B) Luego demostrar que el valor decimal - 1234, 5678 en su forma de punto flotante, real con precisin simple (32 bits) produce, C4 9A 52 2BH = 1100 0100 1001 1010 0101 0010 0010 1011B C) De acuerdo al valor punto flotante comprobado anteriormente, indique en binario el valor del Signo, del Exponente y de la Mantisa correspondiente.
21
Transformar el valor decimal 12345 a hexadecimal y binario. Luego, transformar el valor 12345,00 a su formato punto flotante, real corto.
2.4.-
Al contar con expresiones numricas expresadas en la forma de punto flotante, es posible generar una aritmtica y matemticas para ser usada con la forma. Esta aritmtica estar compuesta por un conjunto de reglas aplicables a las distintas operaciones. Por ejemplo, para la multiplicacin de dos valores en punto flotante se establece que para determinar el producto, debe multiplicarse las mantisas y debe sumarse los exponentes de los valores. Entonces, a) Justificar la regla enunciada anteriormente. b) Determinar la regla para realizar el cuociente entre dos cantidades numricas expresadas en la forma de punto flotante.
________________________________________________________________________ Nota:
Posiblemente a esta atura de sus conocimientos la siguiente nota no le dir mucho. Sin embargo, en algn momento posterior le encontrar sentido al siguiente alcance: El algoritmo para transformar un valor numrico a su forma de punto flotante, forma parte de prcticamente todos los programas Ensambladores para Procesadores de la familia INTEL 80x86 (tambin de otros similares de otras tecnologas). De esta manera, al especificarse dentro de un programa fuente la siguiente directiva.
DATO1
dd
-17809.27234
el Ensamblador determinar el valor correspondiente en formato real corto (32 bits, un bit de signo, 8 bits de exponente y 23 bits para la mantisa. Si se especifica en cambio las directivas que siguen,
DATO2 DATO3
dq dt
987210.56098 123456789.0987654321
se obtienen las expresiones en formato de punto flotante, con 64 bits (dq = define quad word) y con 80 bits (dt = define ten - 10 - bytes). Una vez ensamblado el programa, ser posible conocer las transformaciones si procede a leer el correspondiente archivo listado (.LST). Debe considerar que el byte ms bajo resulta en la posicin de memoria ms baja. Tambin podr cargar el programa ensamblado a la memoria del computador mediante una herramienta como el DEBUG o el SYMDEB, para luego conocer la transformacin a punto flotante mediante el volcado de memoria (-d).
________________________________________________________________________
22
Respuestas:
A) 8192 = 2000H = 0010 0000 0000 0000B B) 256 = 100H = 0001 0000 0000B C) 1048576 = 100000H = 0001 0000 0000 0000 0000 0000B B) 4095 = 0FFFH = 0000 1111 1111 1111B C) 16383 = 3FFFH = 0011 1111 1111 1111B D) 65535 = 0FFFFH = 1111 1111 1111 1111B E) 1023 = 3FFH = 0011 1111 1111B F) 511 = 1FFH = 0001 1111 1111B A) 8738 B) 101 C) 2560 D) 240 E) 7904 F) 5578 1.2.G) 4096 H) 100 1.3.i) 79=4FH=0100 1111B ii) 99=63H=0110 0011B ii) 1234=04D2H=010011010010B 1.4.I) 7FH = 01111111B = 127 (sin signo) = +127 (con signo) II) 80H = 10000000B = 128 (sin signo) = -128 (con signo) III) A0H = 10100000B = 160 (sin signo) = -96 (con signo) IV) 4FH = 01001111B = 79 (sin signo) = +79 (con signo) V) 9AH = 10011010B = 154 (sin signo) = -102 (con signo) VI) 3EH = 00111110B = 62 (sin signo) = +62 (con signo) VII) C5H = 11000101B = 197 (sin signo) = -59 (con signo) VIII) 08H = 00001000B = 8 (sin signo) = +8 (con signo) 1.5.El cuarto cuarteto de bits (1011B) es mayor que 9, por lo que no puede representar un dgito BCD. 1.6.1.6.1) El mtodo se sugiere dentro del mismo problema. 1.6.2) 0,99609375 1.6.3) 1.6.4) Una cantidad tendiente a infinitos bits. 1.6.5) a) 0,999984741 b) 0,999999046 54241,339599609375 1.7.a) 255, 99609375 b) Entero = 0C1H = 1100 0001B, 1.8.Fraccin = 0001 0110 1100 1100B = 16CCH a) 435 = 663o b) 444o = 292 c) 9 no pertenece al conjunto de 1.9.los smbolos de la base octal. a) 0 C5 1A 7A A0H b) -206,134765625 2.0.Sin comentarios. 2.1.- y 2.2.12345 = 3039H =0011 0000 0011 1001B, 2.3.12345,00 = 4640E400H = 0100 0110 0100 0000 1110 0100 0000 0000B 2.4.a) Considerar la expresin k por 2 elevado a y para cada valor y deducir. b) Cuociente de mantisas y diferencia de exponentes. 1.1.-
________________________________________________________________________
23