de Nmeros Reales Gustavo D-Modificado Oct 2012 1. Introduccin La representacin de nmeros reales en una computadora no es tan directa como la representacin de enteros. Esto se debe a que los nmeros reales tienen dos partes, una parte entera y una parte fraccional. Por ello, es importante para nosotros el entender como las computadoras guardan los nmeros reales. El nmero de bits disponibles en una computadora para representar un nmero de punto flotante o real puede ser comparativamente grande. Por ejemplo, si 2 bytes de memoria es reservada para enteros en una computadora, entonces al menos 4 bytes son reservados para nmeros de punto flotante. Los nmeros reales son ms grandes que los enteros en el sentido de que existe una parte entera y una parte fraccional. Los nmeros reales como (32.5) 10 consisten de dos partes, una parte entera 32 y una parte fraccional 5. De acuerdo a sus pesos posicionales, as es como se vera: (32.5) 10 = 3x10 1 + 2x10 0 + 5x10 -1
Veremos cmo un nmero real decimal puede ser convertido en binario y cmo puede ser representado usando algunos ejemplos. Ejemplo 4.1 Este ejemplo muestra cmo el nmero real (32.5) 10 puede ser convertido en su forma binaria y cmo puede ser representado en una forma esquemtica. Paso 1: Convertir la porcin entera (32) 10 en binario. 32 2 16 0 LSB 2 8 0 2 4 0 2 2 0 2 1 0 0 1 MSB
As, la forma binaria de (32) 10 es (100000) 2
Paso 2: Convertir la parte fraccional (.5) 10 en binario. Para hacer esto, multiplicamos el nmero por 2, extrayendo la parte entera resultante en cada paso. El proceso es repetido con la parte fraccionaria resultante hasta que se vuelva cero (con ciertos nmeros fraccionarios en decimal, como 0.3, el proceso anterior puede no terminar). 0.5x2 = 1.0 1 Dado que la parte fraccional se volvi cero, el bit extrado que constituye el equivalente binario de (.5) 10 es (.1) 2 . As, el equivalente binario de (32.5) 10 es (100000.1) 2 . Vamos a tomar otro ejemplo consistente de slo la parte fraccionaria para entender mejor la conversin. Vamos a convertir .625 en su equivalente binario. .625 x 2 = 1.250 1 .250 x 2 = 0.50 0 .50 x 2 = 1.0 1 Gustavo D-Modificado Oct 2012 En el tercer paso, la parte fraccional resultante se convierte en cero. As .625 = (101) 2 . Paso 3: Representar el nmero binario que tiene una parte entera y una parte fraccional. Uno de los esquemas para representar nmeros reales ms ampliamente usados es expresarlos en trminos de una mantisa y un exponente. En este formato, (32.5) 10
es expresado como esto. (32.5) 10 = .325x10 2 Aqu, .325 es llamado la mantisa y 2 es llamado el exponente. Hemos movido el decimal a la izquierda dos posiciones, as elevamos 10 a la potencia 2. El nmero se dice que esta normalizado si el decimal es seguido inmediatamente por un dgito diferente de cero. En forma similar, podemos expresar un nmero binario en trminos de un exponente y una mantisa. Un nmero real binario est normalizado si, en la mantisa, el bit 1 ocurre inmediatamente despus del punto decimal. En nuestro caso, (100000.1) 2 puede escribirse como se muestra a continuacin. .1000001x2 6
Aqu, (.1000001) 2 es la mantisa en su forma normalizada y 6 es el exponente (ahora expresado en potencias de 2). Est claro que necesitamos guardar los bits de la mantisa y del exponente en forma separada. Lo siguiente proporciona un esquema para guardar nmeros reales en el sistema binario, asumiendo que se usan 4 bytes.
Bit de Signo 15 bits para mantisa 8 bits ms para mantisa 8 bits para exponente Usamos un total de 32 bits para guardar un nmero real. Un bit es usado para el signo, 23 bits para la mantisa excluyendo el bit de signo y 8 bits para el exponente. Paso 4: Guardar la mantisa normalizada en los 23 bits reservados para ella. La mantisa normalizada es (.1000001) 2 . Como estamos representando un nmero positivo; el bit de signo es 0. Note que (.1000001) 2 requiere slo de 7 bits. Por lo tanto, rellenamos la mantisa con 16 ceros a la derecha. sb 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 EXPONENTE
Eso deja slo 8 bits para el trabajo de representar al exponente . Algunas veces tambin tenemos que representar exponentes negativos como .10101x2 -3
Necesitamos representar ambos, enteros positivos y negativos, en 8 bits. En otras palabras, requerimos de un bit de signo. Vamos a ver cmo representamos un entero con signo para el exponente. Imagine que tenemos 8 bits para representar el exponente y que los enteros son representados en la forma de complemento a dos. As, podemos representar enteros Gustavo D-Modificado Oct 2012 en el rango [-128, +127] y exponentes en el rango [2 -128 , 2 +127] . El menor exponente que puede ser representado en 8 bits es 2 -128 . Para lograr esto, tenemos que convertir -(128) 10 en binario en la forma de complemento a dos y guardarlo. Para evitar representar nmeros negativos, seguimos un esquema diferente. Sumamos una cantidad positiva +(128) 10 al exponente y representamos el resultado en 8 bits. Por ejemplo, para representar (128) 10 como en 2 -128 , sumamos +(128) 10 al exponente y representamos el resultado. Esto es -128 + 128 = 0. Por lo tanto, para representar -128 como un exponente, se usa 0. Esto es llamado el exponente desplazado debido a que estamos desplazando el exponente por cierto valor. Este valor es llamado el cdigo excedente. As exponente desplazado = exponente + cdigo excedente Para un conjunto dado de n bits para un exponente, el cdigo de exceso debe ser +2 n-1 . Por ejemplo, si n es 4, el cdigo de exceso puede ser +2 4-1 = 8 y si n es 8, el cdigo de exceso es +2 8-1 = 128. Al desplazar el exponente con el cdigo de exceso, tenemos slo enteros positivos en un rango entre 0 y 2 n -1. Aqu decimos 2 n
en vez de 2 n-1 dado que usamos todos los n bits para la representacin, ya que no hay un bit de signo. Vamos a tomar un ejemplo para entender esto claramente. Asumiendo que el nmero de bits dado para el exponente es 4, sabemos que podemos representar exponentes en el rango de 2 4-1 a +2 4-1 -1, lo que es 8 a +7. Un total de 16 exponentes pueden ser representados desde 8 a +7. Cuando aplicamos el cdigo de exceso de +8, el exponente desplazado vara de 0 a 15, lo que de nuevo representa 16 valores. Paso 5: Sumar el cdigo de exceso al exponente y representarlo en los 8 bits para un exponente desplazado. Exponente desplazado = 6 + 128 = (134) 10 . 134 2 67 0 LSB 2 33 1 2 16 1 2 8 0 2 4 0 2 2 0 2 1 0 2 0 1 MSB
As, (134) 10 es expresado como (10000110) 2 Note cuidadosamente que estos 8 bits contiene slo una magnitud positiva y por lo tanto no hay necesidad de un bit de signo. Siempre podemos obtener de nuevo el valor del exponente restando el cdigo de exceso del exponente desplazado. Paso 6: La representacin final de (32.5) 10 en forma binaria se expresa: 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 Este esquema usa 32 bits, o 4 bytes. Por lo tanto, nos referimos a l como el esquema de 32 bits para la representacin de nmeros reales en binario. Gustavo D-Modificado Oct 2012 Fin de Ejemplo 4.1
Ejemplo 4.2 ste ejemplo mostrar como representar (32.5) 10 en el esquema de 32 bits, seguido en el Ejemplo 4.1 de esta Unidad. Sabemos del ejemplo previo que (32.5) 10
es expresado como (.1000001)x2 6 Aqu, la representacin de (32.5) 10 en el esquema de 32 bits es mostrada en tres pasos. Paso 1: Represente la mantisa normalizada y el exponente desplazado como se muestra en el Ejemplo 4.1. 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 Paso 2: Considere la mantisa completa incluyendo el bit de signo. Convirtalo en su forma de complemento a dos para representar el nmero negativo. Bits Originales : 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Bits cambiados : 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Sumar 1 : 1 Complemento a Dos : 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
El bit de signo es ahora 1, indicando un nmero negativo. Debe notarse que para representar un nmero negativo, slo convertimos los bits de la mantisa a la forma de complemento a dos. El exponente desplazado permanece sin cambio. Fin de Ejemplo 4.2 Los ejemplos anteriores ilustran el mtodo de convertir un nmero real decimal en su forma binaria y representar el nmero binario como una mantisa normalizada y un exponente desplazado. Tambin aprendimos que, para representar un nmero real negativo, tenemos que representar primero la contraparte positiva y convertir todos los bits de la mantisa, incluyendo el bit de signo, en su forma de complemento a dos. A pesar que el procedimiento no es complicado, ciertos nmeros reales pueden crear problemas. Examinaremos esto en el siguiente ejemplo. El siguiente ejemplo nos muestra que hacer cuando la parte fraccional de un nmero real no produce un cero durante su conversin usando multiplicacin. Ejemplo 4.3 Representar (108.3) 10 en su forma binaria aplicando el esquema mencionado anteriormente. En este ejemplo, mostramos ambas conversiones, llamadas, real a binario y binario a real. Estas son mostradas en los pasos como RB y BR respectivamente. Paso RB1: Convertir (108) 10 en binario. Gustavo D-Modificado Oct 2012 108 2 54 0 LSB 2 27 0 2 13 1 2 6 1 2 3 0 2 1 1 2 0 1 MSB
Por lo tanto, (108) 10 = (1101100) 2 Paso RB2: Convertir (.3) 10 en binario. 0.3x2 = 0.6 0 0.6x2 = 1.2 1 0.2x2 = 0.4 0 0.4x2 = 0.8 0 0.8x2 = 1.6 1 0.6x2 = 1.2 1 0.2x2 = 0.4 0 0.4x2 = 0.8 0 0.8x2 = 1.6 1 0.6x2 = 1.2 1 0.2x2 = 0.4 0 0.4x2 = 0.8 0 0.8x2 = 1.6 1 Vamos a entender ahora que pasa cuando la multiplicacin no produce un cero en la parte fraccionaria. En el ejemplo anterior, la fraccin .3 nunca produce un cero mientras convertimos la parte fraccionaria. Los bits 1100 parece que se repiten en forma infinita. Todos estos bits son parte de la mantisa. Ya tenemos (108) 10 = (1101100) 2 que toma 7 bits de la mantisa. Por lo tanto, slo tenemos 16 bits en la mantisa para guardar (.3) 10 . Simplemente tomamos los primeros 16 bits extrados anteriormente y descartamos el resto. As, (108.3) 10 es expresado como (1101100.0100110011001100) 2
en 23 bits para la mantisa. Note que el orden de los bits extrados para la parte fraccionaria es el mismo en el cual fueron extrados (de arriba a abajo). Recuerde que en el caso de un entero es en el orden inverso de los bits extrados despus de la divisin (de abajo a arriba). Paso RB3: La forma normalizada de (1101100.0100110011001100) 2 .11011000100110011001100x2 7 Paso RB4: El exponente 7 debe ser convertido en un exponente desplazado sumndole 128. El exponente desplazado es 7 + 128 = (135) 10 . Paso RB5: Convertir el exponente desplazado (135) 10 en binario. 135 2 67 1 LSB 2 33 1 Gustavo D-Modificado Oct 2012 2 16 1 2 8 0 2 4 0 2 2 0 2 1 0 2 0 1 MSB
Por supuesto, no hemos representado .3 en forma exacta debido a la limitacin de bits en la mantisa. Dada la limitacin de bits en la mantisa, es todo lo que podemos hacer para representar (108.3) 10.
Para encontrar qu representa el nmero binario de 32 bits , tenemos que reconvertir la representacin binaria en decimal, como se muestra a continuacin. Usaremos el mismo patrn usado para (108.3) 10 . Paso BR1: Considere los bits en el exponente desplazado (10000111) 2 . Representa (135) 10 . Sabemos que sumamos el cdigo de exceso 128 para obtener el exponente desplazado. El exponente ordinario es 135 - 128 = (7) 10 . Paso BR2: De los bits de la mantisa sabemos el nmero normalizado .1101100010011001100x2 7 = (1101100.0100110011001100) 2 Paso BR3: Convertir la parte entera a decimal. Sabemos de nuestro ejemplo anterior que (1101100) 2 = (108) 10 . Paso BR4: Convertir (.0100110011001100) 2 a decimal. (.0100110011001100) = 1x2 -2 + 1x2 -5 + 1x2 -6 + 1x2 -9 + 1x2 -10 + 1x2 -13 + 1x2 -14
= 1/4 + 1/32 + 1/64 + 1/512 + 1/1024 + 1/8192 + 1/16384 = 4096 + 512 + 256 + 32 + 16 + 2 + 1 16384 = 4915/16384 = 0.2940 As, la representacin del nmero decimal (108.3) 10 en binario se vuelve slo (108.2940) 10 . Esta discrepancia se debe a dos razones: La fraccin .3 produce un flujo recurrente de bits cuando es convertido a binario. El nmero de bits para la mantisa es limitado. Debe notarse que an si tenemos un milln de bits para la mantisa no seremos capaces de representar 108.3 en forma precisa. Fin de Ejemplo 4.3 Gustavo D-Modificado Oct 2012 La computadora es un dispositivo fascinante. Pero debido a que realiza cierto nmero de funciones, tiene sus propias limitaciones. Una de las limitaciones es que slo puede guardar aproximaciones de algunos nmeros reales. Podemos tomar estas aproximaciones lo ms cercanas al nmero representado incrementando el nmero de bits en la mantisa. Sin embargo, an esto tiene un lmite. Dada la limitacin en el nmero de bits en la mantisa y el exponente desplazado, es necesario conocer el rango y la precisin de los nmeros reales que pueden ser representados. Para la representacin de enteros, el rango de enteros que pueden ser representados est claramente especificado con 2 n-1 a 2 n-1 -1 para la representacin de complemento a dos. No es tan directo para los nmeros reales y slo podemos aproximar que nmeros reales pueden ser representados dado un conjunto de bits para la mantisa y exponente. Vamos a aprender acerca de ellos ahora. 2. Rango y Precisin Considere el esquema discutido anteriormente.
Bit de Signo 15 bits para mantisa 8 bits ms para mantisa 8 bits para exponente Aqu, un total de 23 bits son usados para la mantisa, excluyendo el bit de signo y 8 bits para el exponente desplazado. El mximo nmero que puede ser representado con precisin en una mantisa de 23 bits es 2 23 -1 como 8388607.0. Pero cmo representamos 8388607.5? Este no puede ser representado en forma precisa, dado que la misma representacin de 8388607 toma todos los 23 bits de la mantisa. Necesitamos un bit ms para representar la parte fraccionaria de 0.5, el cual no tenemos. Por lo tanto, 8388607.5 no puede ser representado en forma precisa en el esquema anterior. Qu hay sobre 2404304.5? Fcilmente podemos verificar que la representacin de 2404304 tiene nicamente 22 bits, y por lo tanto, 2404304.5 puede ser representada de manera precisa. Esto nos demuestra que si tenemos menos dgitos en la parte integral, tendremos ms bits en la mantisa para representar la parte fraccionaria. La precisin con la que podamos representar un nmero real depende del nmero de dgitos en el nmero (la parte integral y la parte fraccionaria). Esto nos lleva directamente a una pregunta: Cuantos dgitos de un nmero real pueden ser representados de manera precisa en una mantisa de N bits? Par dar respuesta a esta pregunta, hacemos uso de la siguiente relacin: N 2 N = 10 log 10 2 = 10 Nlog 10 2 = 10 0.3xN Si la mantisa esta compuesta de 23 bits, podemos obtener una precisin de 23 * 0.3 = 6.9 (aproximadamente 7). Usted debe notar que una precisin de 7 dgitos no significa que cualquier nmero que tenga 7 dgitos o menos pueda ser exactamente representado. Hemos visto anteriormente que .3 posee nicamente un dgito y que no puede ser representado de manera exacta. Sera as con fracciones como 0.4, 0.2, 0.6, etc. El concepto de precisin sirve simplemente para darnos una idea de un nmero de dgitos decimales significativos que uno puede representar en un nmero binario utilizando un nmero finito o limitado de bits para la mantisa. Gustavo D-Modificado Oct 2012 El exponente desplazado tambin tiene una limitacin de nmeros arreglados de bits. Los exponentes desplazados mnimos y mximos en el sistema binario pueden ser entre 0 y 255 para un exponente de 8 bits. En el esquema de representacin mostrado anteriormente, el nmero ms grande que puede ser representado es: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Lo cual es: 0.11111111111111111111111x2 127 . Hemos llegado a 127 para los exponentes de la siguiente manera: Exponente desplazado es 11111111 = (255) 10 Exponente es 255 - 128 = (127) 10 , donde 128 es el cdigo de exceso. 2 127 es aproximadamente 10 0.3x127 = 10 38.1 Similarmente, 2 -128 es aproximadamente 10 -128x0.3 = 10 -38.4
Por lo tanto, un exponente de 8 bits nos da un rango de aproximadamente 10 -38 . En general, un exponente de N bits dara un rango de 10 .3p , donde p = 2 N -1. En resumen, el nmero de dgitos significativos que pueden ser representados de manera precisa depende del nmero de bits disponible para la mantisa, mientras que el rango de nmeros reales que puede ser representado depende del nmero de bits del exponente desplazado. Hasta ahora, hemos visto algo del sistema binario y como los nmeros decimales pueden ser representados de forma binaria. Existen, sin embargo, muchos otros sistemas usados en la computacin. El sistema octal y el sistema hexadecimal son algunos de los ms populares y ampliamente utilizados. Vamos a discutir estos dos sistemas a continuacin.
3. El Sistema Numrico Octal y el Hexadecimal 3.1 El Sistema Octal El sistema octal es denominado el sistema numrico basado en 8. Posee 8 dgitos validos, llamados, 0,1,2,3,4,5,6, y 7. Un nmero octal vlido es uno cuya combinacin de nmeros sean dgitos validos de 0 a 7. Veamos el ejemplo dado a continuacin: 120 765 025 7654 Todos estos son nmeros octales vlidos. El nmero 876 no es un nmero octal vlido porque contiene el dgito 8. Usted recordar que 02 no es un nmero binario vlido. Para evitar cualquier confusin con nmeros del sistema decimal, los nmeros octales se escriben como (120) 8 , que con el subndice 8 est denotando la base del nmero. El nmero (120) 8 no se lee como ciento veinte en decimal. Para obtener la magnitud del nmero, expresamos los dgitos del nmero de pesos posicionales en potencias de 8. (120) 8 = 1x8 2 + 2x8 1 + 0x8 0 Gustavo D-Modificado Oct 2012 = 64 + 16 + 0 = (80) 10 De esta manera, (120) 8 es ochenta en el sistema decimal. Para obtener el equivalente octal de un nmero decimal dado, tenemos que dividir el nmero por 8 y extraer el exceso. Por ejemplo, as es como convertimos (300) 10 en un nmero octal. 300 8 37 4 LSB 8 4 5 0 4 MSD
De esta manera el nmero octal equivalente de (300) 10 es(454) 8 . La relacin entre el sistema octal y el sistema binario es usualmente utilizada en la computacin. Los nmeros octales proporcionan una forma compacta de representar los nmeros binarios, de manera opuesta a utilizar una larga cadena de 0s (ceros) y 1s(unos). Por ejemplo, considere un nmero binario de 16 bits como se muestra a continuacin: 0110110111110110 Para expresar lo mismo en el sistema octal, agrupamos los bits en 3 bits, cada uno desde la derecha 0 110 110 111 110 110 Ahora, convertimos cada uno de estos grupos en dgitos decimales, como se muestra a continuacin: 0 6 6 7 6 6 Por lo tanto, (0 110 110 111 110 110) 2 = (066766) 8 . En vez de escribir una serie montona de 0s (ceros) y 1s(unos), podemos escribir un nmero octal ms compacto, y la conversin es muy sencilla. Adicionalmente, esto posee otra ventaja. Asumamos que nos dan un nmero octal (057436) 8 . El equivalente binario de este nmero puede obtenerse fcilmente convirtiendo cada dgito a forma binaria. 0 5 7 4 3 6 0 101 111 100 011 110 Fjese que el dgito octal ms a la izquierda se convierte solamente a un bit simple 0 1. Como se menciono anteriormente, los nmeros octales son frecuentemente utilizados para lograr que la escritura sea ms fcil y compacta. Los ejemplos dados a continuacin ilustran esta particularidad. Ejemplo 4.4 Conversin de un nmero binario 1110101 a octal. Paso 1: Agrupe los bits en 3 bits, cada uno desde la derecha. 01 110 101 Paso 2: Convierta los bits de cada grupo en un dgito octal. Binario : 01 110 101 Octal : 1 6 5 Gustavo D-Modificado Oct 2012 De esta manera el byte anterior representa (165) 8. Fin del Ejemplo 4.4
Ejemplo 4.5 Conversin de un nmero binario 11111111 a un nmero octal. Paso 1: Agrupe los bits en porciones de 3 bits cada uno desde la derecha. 11 111 111 Paso 2: Convertir los bits de cada grupo en un dgito octal. Binario : 11 111 111 Octal : 3 7 7 De esta manera, (11111111) 2 = (377) 8 . Fjese que el byte contiene un 1(uno) en el bit de signo. Entonces, se trata de un nmero negativo en la forma complementaria de dos. Esta ms all del alcance de este curso, discutir como un sistema de nmeros octales representan enteros negativos. Fin del Ejemplo 4.5 Ejemplo 4.6 Conversin de un nmero binario de 16 bits binario a un nmero octal. 0111 0110 0000 0001 Paso 1: Agrupe los bits en tres bits cada uno desde la derecha. 0 111 011 000 000 001 Aqu, en el caso de 16 bits, el bit que se encuentra ms hacia la izquierda se dejar solo, (para completar lo podramos haber escrito como 000). Paso 2: Convertir cada grupo de 3 bits en un dgito octal. Binario : 0 111 011 000 000 001 Octal : 0 7 3 0 0 1 Entonces, el equivalente octal es (073001) 8 . Un nmero binario de 16 bits siempre tiene un equivalente octal de 6 dgitos. Fin del Ejemplo 4.6 Ejemplo 4.7 Conversin de un nmero binario de 16 bits en la forma de complemento a dos, a un nmero octal. 1000 1111 0101 0001 Paso 1: Dividir el nmero de 16 bits, en un grupo de tres empezando desde la derecha. 1 000 111 101 010 001 Paso 2: Convertir cada grupo de 3 bits en un dgito octal. Binario : 1 000 111 101 010 001 Gustavo D-Modificado Oct 2012 Octal : 1 0 7 5 2 1 Entonces, el equivalente octal del nmero binario de 16 bits es (107521) 8 . Fin del Ejemplo 4.7 El nmero binario de 16 bits tena un 1 (uno) en el signo bit indicando que era un nmero negativo. 3.2 El Sistema Hexadecimal La base del sistema hexadecimal es 16. Entonces, el sistema posee 16 dgitos validos. Ellos son 0,1,2,3,4,5,6,7,8 y 9 que constituyen los diez primeros dgitos. Los otros seis dgitos son A,B,C,D,E y F representando los equivalentes decimales de 10,11,12,13,14 y 15 respectivamente. Un nmero vlido hexadecimal es una combinacin de uno o ms de los diecisis dgitos vlidos. Fjese en el ejemplo mostrado a continuacin: 249 B34F BAD 3FAD FADE Todos ellos son nmeros hexadecimales vlidos. Para evitar cualquier confusin, los nmeros hexadecimales se escriben con subndice de 16 tal como (249) 16 . El siguiente ejemplo nos muestra como descifrar la magnitud de un nmero hexadecimal en la forma decimal. Ejemplo 4.8 Conversin de un nmero hexadecimal (249) 16 en decimal. (249) 16 = 2x16 2 + 4x16 1 + 9x16 0
= 2x256 + 64 + 9 = 512 + 64 + 9 = (585) 10 Fin del Ejemplo 4.8 Ejemplo 4.9 Conversin de un nmero hexadecimal (FADE) 16 en decimal. (FADE) 16 = 15x16 3 + 10x16 2 + 13x16 1 + 14x16 0
= 15x4096 + 2560 + 208 + 14 = 61440 + 2560 + 208 + 14 = (64222) 10 Fin del Ejemplo 4.9 As como en los nmeros octales, los nmeros hexadecimales son ms frecuentemente usados en conjuncin con los nmeros binarios que por s solos. Vamos a ver la relacin entre los dos sistemas de nmeros en el siguiente ejemplo. Ejemplo 4.10 Un byte tiene la siguiente representacin (00110101) 2 Paso 1: Ordene el grupo de 8 bits en grupos de 4 bits cada uno. 0011 0101 Gustavo D-Modificado Oct 2012 Paso 2: Convierta cada grupo en su equivalente hexadecimal. Binario : 0011 0101 Hexadecimal : 3 5 Entonces, el equivalente hexadecimal del nmero binario 00110101 es (35) 16 . Fin del Ejemplo 4.10 Ejemplo 4.11 Conversin del nmero binario (10111111) 2 en hexadecimal. Paso 1: Agrupe los 8 bits en porciones de 4 bits cada uno. 1011 1111 Paso 2: Convertir cada grupo de 4 bits en su equivalente hexadecimal. Binario : 1011 1111 Hexadecimal : B F Entonces, el equivalente hexadecimal del nmero binario es (BF) 16 . El bit de signo en el byte mostrado arriba es 1 indicando que es un nmero negativo. El nmero hexadecimal (BF) 16 no tiene ninguna indicacin explcita de que es un nmero negativo. nicamente su contraparte binaria revela que se trata de un nmero negativo. Fin del Ejemplo 4.11 4. Conversiones entre Sistemas: Sintetizando El sistema decimal es el ms natural entre los sistemas de nmeros existentes. Hemos visto en captulos anteriores que el sistema binario es utilizado en todos los sistemas de computadoras modernas. Los programadores utilizan los sistemas octal y hexadecimal para tener una representacin ms corta de los nmeros binarios. Usualmente, puede ser necesario convertir un nmero de un sistema a otro. En esta seccin se discute la conversin de un sistema a otro. Hemos visto como convertir nmeros decimales a la forma binaria. Ahora discutiremos esto una vez ms. 4.1 Conversin del Sistema Binario al Sistema Decimal El procedimiento general para convertir un nmero binario a un nmero decimal es expresar el nmero en potencia de dos como pesos posicionales. Existe otro mtodo denominado el mtodo Double Babble, el cual hace conversiones ms rpidas. 4.2 Conversin de Decimal a Octal y de Octal a Decimal Para convertir un nmero decimal a su equivalente octal, sucesivamente dividimos el nmero decimal por 8 (el cual es la base del sistema octal) y extraemos los residuos hasta que el cociente se convierta en cero. Los dgitos extrados como residuos constituyen el nmero octal. Un nmero octal puede ser convertido a su contraparte decimal utilizando el mtodo de peso posicional en potencias de 8. 4.3 Conversin de Decimal a Hexadecimal y de Hexadecimal a Decimal Esto es igual que la conversin de un decimal a un octal, excepto que la potencia 16 es utilizada en lugar de la potencia de 8. Ambos, nmeros octales y hexadecimales pueden ser convertidos a su forma binaria, convirtiendo cada dgito del nmero a su equivalente binario. Un nmero binario puede Gustavo D-Modificado Oct 2012 convertirse en su forma octal o hexadecimal mediante la agrupacin de bits en grupos de tres o cuatro respectivamente y encontrando su valor. Ahora aprenderemos sobre la representacin de caracteres en sistemas de computo. 5. Representacin de Caracteres en el sistema Binario Hemos visto como los nmeros son representados utilizando el sistema binario. Sin embargo, las aplicaciones de computacin no slo requieren de nmeros, sino de otros caracteres adicionales tales como las letras del alfabeto, caracteres de puntuacin - !, ?, (, ), {, }, [, ], *, *, /, +, -, y otros. Por ejemplo, en una aplicacin bancaria, el nombre del dueo de la cuenta puede estar almacenado en la computadora, entre otras cosas. Estos caracteres tendrn que ser codificados en un sistema binario y representado en la computadora. 5.1 Cdigo ASCII La mayora de computadoras modernas utilizan el cdigo ASCII para representar caracteres. ASCII son las siglas de American Standard Code for Information Interchange. (Cdigo Estndar Americano para Intercambio de Informacin). Se trata de un esquema de codificacin estandarizado para representar caracteres. Cada carcter es codificado como un cdigo nico de siete bits, denominado el cdigo ASCII. Estos siete bits pueden producir 2 7 = 128 patrones nicos de bits. Consecuentemente, podemos representar exclusivamente 128 caracteres utilizando el cdigo ASCII. Cada carcter es representado en un byte. Mayormente, el cdigo ASCII es utilizado para leer desde dispositivos de entrada o para imprimir hacia dispositivos de salida. Vamos a asumir que nuestros nombres sern impresos desde un computador. Entonces, el cdigo ASCII correspondiente a cada letra de nuestros nombres sern enviadas a una impresora. En ASCII, la letra mayscula A es representada por el nmero 65 y la letra minscula a es representada por el nmero 97. El resto del alfabeto tiene nmeros consecutivos. As el nombre Anne ser almacenado en el computador utilizando 4 bytes como sigue 65 110 110 101 lo cul en binario ser 01000001, 01101110, 01101110 y 01100101 respectivamente. Pero no todos los cdigos ASCII pueden imprimirse. Muchos de ellos son cdigos que corresponden a funciones de control especiales mas que a caracteres de salida en forma imprimible. Por ejemplo, el cdigo ASCII 7 cuando es enviado a la unidad visual de impresin usualmente produce un pequeo beep. Existen muchas funciones de control requeridas por los dispositivos de entrada / salida. Por ejemplo, podemos tener cierto cdigo ASCII para colocar el cursor en la parte superior izquierda del monitor. Podemos usar otro cdigo ASCII para sacar un papel de una impresora. Una discusin acerca de estos temas, sin embargo, esta fuera del alcance de este libro. 5.2 Cdigo EBCDIC Antes de la formulacin del cdigo ASCII, no existan estndares especficos para caracteres de codificacin y los fabricantes tenan, cada uno, sus propios esquemas de codificacin. Como resultado de esto, las aplicaciones hechas en una computadora rara vez trabajaban en una computadora de otro fabricante distinto. Durante esos das caticos, IBM tomo el liderazgo de desarrollar un cdigo estndar para representar caracteres. Empleo un cdigo de ocho bits, conocido como el cdigo Gustavo D-Modificado Oct 2012 EBCDIC. EBCDIC significa Extended Binary Coded Decimal Interchange Code. (Cdigo de Intercambio Decimal al Cdigo Binario Extendido). Por muchos aos, las computadoras de IBM posean cdigo EBCDIC mientras que las computadoras de otros fabricantes tenan varios otros cdigos. Hoy en da, con el cdigo ASCII que se va convirtiendo en un estndar, las computadoras de IBM tambin incluyen el cdigo ASCII. Sin embargo, computadoras ms antiguas como la IBM 1130 y la serie 1800 todava tienen el cdigo EBCDIC.