Enrique R. Aznar Dpto. de Álgebra MÓDULO 1 SISTEMAS DE NUMERACIÓN. ¿Cómo se representan los números? Página web personal Página de Abertura 1. Introducción. Definición 1. Definición 2. Definición 3. 2. Sistemas de numeración posicional con raíz o base fija. 2.1. Números reales sin signo, con punto decimal fijo. Definición 4. Lema 1. Ejemplo 1. Ejemplo 2. 2.2. Enteros sin signo. Definición 5. Lema 2. Ejemplo 3. 5 6 6 6 7 7 7 8 9 9 9 10 10 10 Contenido JJ II J I Página 1 de 41 Atrás Pantalla grande/pequeña Cerrar Definición 6. Enteros con signo. Definición 7. Ejemplo 4. 2.4. Enteros con sesgo. Definición 8. Ejemplo 5. Lema 3. 2.5. Enteros con signo complementados. Definición 9. Lema 4. Ejemplo 6. Definición 10. 2.6. Complemento al dos. Ejemplo 7. Definición 11. Lema 5. Ejemplo 8. Lema 6. 2.7. Complemento al uno. Ejemplo 9. 3. Representación de números reales. Ejemplo 10. 2.3. 10 11 11 11 12 12 13 13 14 14 15 16 17 17 18 18 19 19 20 21 21 22 23 Enrique R. Aznar Dpto. de Álgebra Página web personal Página de Abertura Contenido JJ II J I Página 2 de 41 Atrás Pantalla grande/pequeña Cerrar 3.1. Números en coma flotante. Ejemplo 11. Definición 12. Definición 13. Definición 14. 3.2. Sistemas logarítmicos. Definición 15. Ejemplo 12. Ejemplo 13. 4. Sistemas de numeración residuales. Definición 16. Ejemplo 14. 5. Ejercicios. Ejercicio 1. Ejercicio 2. Ejercicio 3. Ejercicio 4. Ejercicio 5. Ejercicio 6. Ejercicio 7. Ejercicio 8. Ejercicio 9. Ejercicio 10. 24 24 25 26 27 28 28 28 29 30 31 31 33 33 33 34 34 34 34 35 35 35 35 Enrique R. Aznar Dpto. de Álgebra Página web personal Página de Abertura Contenido JJ II J I Página 3 de 41 Atrás Pantalla grande/pequeña Cerrar 6. 7. Bibliografía Test de repaso. 36 36 Enrique R. Aznar Dpto. de Álgebra Página web personal Página de Abertura Contenido JJ II J I Página 4 de 41 Atrás Pantalla grande/pequeña Cerrar 1. I NTRODUCCIÓN . Enrique R. Aznar Dpto. de Álgebra Los sistemas de representación de números han avanzado en paralelo con la evolución del lenguaje. El más antiguo método de representación consiste en el uso de piedras o palillos. Gradualmente, conforme números mayores eran usados, este sistema se hizo impracticable. Primero se agrupaban las piedras o palillos en grupos, hasta que se empezó a usar piedras mayores o distintas para representar al grupo. Su evolución llevó a usar símbolos en vez de objetos. Un ejemplo de este proceso lo constituye el sistema de numeración romana que consistía en usar los símbolos I , V, X , L, C , D, M , ((I )), (((I ))) para representar grupos de Página web personal Página de Abertura Contenido JJ II J I Página 5 de 41 1, 5, 10, 50, 100, 500, 1000, 10000, 100000 Atrás respectivamente. Sin embargo, el sistema romano no es conveniente ni para representar grandes números ni para hacer aritmética. Pantalla grande/pequeña El primer sistema que se usó para simplificar la aritmética lo introdujeron los chinos y era de tipo posicional. Cerrar Definición 1. Se llama sistema posicional de representación de números aquel en que el valor de un símbolo, no sólo depende del mismo, sino también de la posición que ocupa entre los demás. En un sistema posicional, la unidad correspondiente, en cada posición, puede ser un múltiplo constante de la unidad en la posición inmediata anterior. En este caso, a la constante se le llama la base o raíz del sistema de numeración. Enrique R. Aznar Dpto. de Álgebra Página web personal Casi todos los sistemas modernos son de este tipo. Por ejemplo, Definición 2. El sistema decimal es un sistema posicional que usa como constante multiplicativa el 10 y como conjunto de dígitos el rango de enteros [0, 9]. El sistema de representación de intervalos de tiempo es, sin embargo, un ejemplo de Definición 3. Un sistema posicional de raíz mixta es un sistema posicional donde la constante multiplicativa cambia con la posición. En este sistema se habla de vector de raíces o bases. Por ejemplo, para los intervalos de tiempo de días, horas, minutos y segundos se usa el vector 24, 60, 60, 1 Página de Abertura Contenido JJ II J I Página 6 de 41 Atrás Pantalla grande/pequeña Cerrar Los sistemas posicionales de raíz mixta tienen algoritmos complejos para su aritmética. Mientras que de raíz o base fija son bastante más sencillos. Enrique R. Aznar Dpto. de Álgebra La popularidad de estos últimos se basa en la existencia de algortimos simples y elegantes para todas las operaciones aritméticas. 2. 2.1. S ISTEMAS DE NUMERACIÓN POSICIONAL CON RAÍZ O BASE FIJA . Números reales sin signo, con punto decimal fijo. Definición 4. Un sistema de numeración posicional con base fija está basada en un entero positivo fijo, la base o raíz r y un conjunto de dígitos {0, 1, . . . , r − 1}1. Considerar un punto decimal fijo equivale a representar un número real x positivo, por un vector de dígitos de longitud k +l , donde los k primeros dígitos representan la parte entera del número x y los l siguientes representan la parte fraccionaria. De forma que la sucesión o vector de dígitos x k−1 x k−2 · · · x 1 x 0 .x −1 x −2 · · · x −l 1No es imprescindible y existen sistemas posicionales con otros conjuntos de dígitos. Cuando no usamos ese conjunto de dígitos la representación puede no ser única. Página web personal Página de Abertura Contenido JJ II J I Página 7 de 41 Atrás Pantalla grande/pequeña Cerrar Enrique R. Aznar Dpto. de Álgebra representa el número real x= k−1 X xi r i i =−l Llamamos ul p (unit in least significant position) al menor número real, estricto positivo, que puede representarse con un vector de k + l dígitos. Así, ul p es el número representado por la sucesión 0 · · · 0,0 · · · 1. O sea, ul p = r −l = 0,0 · · · 1 Con k y l fijos decimos que el sistema es de punto fijo (fixed point). En este sistema, el máximo número real (positivo) que puede representarse corresponde a la sucesión de dígitos r − 1 · · · r − 1.r − 1 · · · r − 1 Como se comprueba sumando ul p = r −l = 0,0 · · · 1, corresponde a la representación del número real positivo max = r k − r −l = r k − ul p Como consecuencia de las definiciones, el siguiente resultado es inmediato: Lema 1. Con un sistema de punto fijo, se pueden representar todos los números reales positivos en el intervalo [0, max] de ul p en ul p . O sea, todos los números reales de la sucesión {λ ∗ ul p }λ=0,...,r k+l −1 Página web personal Página de Abertura Contenido JJ II J I Página 8 de 41 Atrás Pantalla grande/pequeña Cerrar Ejemplo 1. Con números binarios, con 4 bits, tomando k = 3 (parte entera) y l = 1 (parte fraccionaria), podemos representar biyectívamente todos los números del conjunto {0, 0.5, 1, . . . , 7, 7.5}. O sea, el intervalo [0, 7.5], de 0,5 en 0,5, de la siguiente forma Enrique R. Aznar Dpto. de Álgebra 0000 = 0, 0001 = 0.5, 0010 = 1, . . . , 1101 = 6.5, 1110 = 7, 1111 = 7.5 Ejemplo 2. Un sistema posicional con raíz negativa b = −r y conjunto de dígitos el rango de enteros [0, r − 1] también tiene sentido. x = (x k−1 x k−2 · · · x 1 x 0 .x −1 x −2 · · · x −l )−r = X x i (−r )i = Página web personal Página de Abertura i = X i par xi r i − X Contenido xi r i i impar El sistema negabinario se define como el sistema posicional que usa como constante multiplicativa el −2 y los bits 0 y 1. Los números naturales 0, 1, 2, . . . pueden ser representados como números reales con punto decimal fijo sin parte fraccionaria, o sea con l = 0 o equivalentemente ul p = r 0 = 1. JJ II J I Página 9 de 41 Atrás Pantalla grande/pequeña 2.2. Enteros sin signo. Esta representación de los números enteros positivos o naturales es llamada en inglés unsigned integers. Constituyen un tipo de dato básico o primitivo, en casi todos los lenguajes de programación. Cerrar Definición 5. Para raíz r , un natural n que se represente con k cifras será Enrique R. Aznar Dpto. de Álgebra n = a k−1 r k−1 + · · · + a 0 Claramente, con k dígitos, uno pueden representar todos los números naturales desde 0 hasta r k −1. Esto es, el intervalo [0, r k −1] de números naturales. Ahora, por definición de logaritmo, se tiene Página web personal Lema 2. Un natural, n , necesita para representarse como máximo Página de Abertura k = max = blogr nc + 1 = dlogr (n + 1)e Contenido Ejemplo 3. Con números binarios, con 4 bits, podemos representar biyectívamente todos los números enteros en el intervalo [0, 15] por JJ II 0000 = 0, 0001 = 1, 0010 = 2, . . . , 1101 = 13, 1110 = 14, 1111 = 15, J I En base r = 2, la aritmética módulo 2k de estos números, suele estar implementada en hardware. Casi todos los sistemas operativos acceden a ellos a través de registros e instrucciones de código máquina2. Definición 6. Se produce desbordamiento (overflow) cuando el resultado tiene más de k dígitos. En cuyo caso, no se consideran los dígitos (bits para r = 2) más a la izquierda o más significativos (los superiores a k ). 2Con k la longitud de palabra del procesador. Hoy día los ordenadores tienen k = 64 bits. Página 10 de 41 Atrás Pantalla grande/pequeña Cerrar Así, la aritmética de estos números para la suma y producto es la aritmética modular, módulo3 r k . Como son positivos, la resta sólo tiene sentido cuando el sustraendo es menor que el minuendo. Enrique R. Aznar Dpto. de Álgebra Sin embargo, es posible manejar también los enteros negativos. 2.3. Enteros con signo. La representación de los números enteros positivos y negativos es llamada en inglés signed integers. Para representar enteros negativos se introduce la representación donde se reserva el dígito (bit para r = 2), más siginificativo para el signo, con el convenio siguiente. Definición 7. Si el bit más significativo es 1 (bit activado) representa un número negativo y 0 (bit desactivado) uno positivo. Así, se consiguen representar todos los enteros en el rango [−r k−1 , r k−1 ] con el inconveniente de que el cero tiene dos representaciones +0 y −0. O sea, 0 · · · 0 = 0 = 10 · · · 0 Ejemplo 4. Con 4 bits, los enteros con signo que podemos representar (no biyectívamente) son todos los números enteros en el intervalo [−7, 7] por 0001 = 1, 0010 = 2, 0011 = 3, 0100 = 4, 0101 = 5, 0110 = 6, 0111 = 7, 3Para los procesadores de hoy día, r k = 264 = 18446744073709551616 Página web personal Página de Abertura Contenido JJ II J I Página 11 de 41 Atrás Pantalla grande/pequeña Cerrar 0000 = 0 = 1000, Enrique R. Aznar Dpto. de Álgebra 1001 = −1, 1010 = −2, . . . , 1101 = −5, 1110 = −6, 1111 = −7 Las ventajas de esta representación incluyen su apariencia intuitiva, simplicidad conceptual, rango simétrico y sobre todo la simple negación que consiste en complementar el bit más significativo (activarlo o desactivarlo). La principal desventaja es que la suma de dos enteros con signo diferente (resta) se implementa de forma diferente a la suma cuando tienen el mismo signo. Por todo lo anterior, esta representación no es muy utilizada. 2.4. Enteros con sesgo. Esta representación de los números naturales es llamada en inglés biased representation. Página web personal Página de Abertura Contenido JJ II J I Página 12 de 41 Una manera de representar enteros con signo sin que halla una doble representación del cero consiste en sumar (sesgar) al entero inicial una cantidad fija llamada bias tal que trasforme el rango [−bi as, max −bi as] en el rango [0, max]. Atrás Pantalla grande/pequeña Cerrar Definición 8. Esta representación es llamada exceso-bias cuando se suma la cantidad bias, por ejemplo en inglés excess-3 cuando se suma 3 o excess128 coding cuando se suma 128. k−1 En una representación con k -bits, tomando bi as = 2 , se consigue que el bit más significativo indique el signo del entero representado. Aunque la regla es la contraria de la usual. Enrique R. Aznar Dpto. de Álgebra Cuando este bit está activado (vale 1) representa un número positivo y cuando está desactivado (vale 0) representa un número negativo. Además, para base r = 2 y bias igual a 2k−1 o 2k el rango transformado es casi simétrico. Ejemplo 5. Con bias= 24 = 16. O sea, en el sistema exceso-16 , podemos representar biyectívamente todos los números enteros en el intervalo [−8, 7] por Página web personal 0001 = −7, 0010 = −6, . . . , 0101 = −3, 0110 = −2, 0111 = −1, Contenido Página de Abertura 1000 = 0, 1001 = 1, 1010 = 2, 1011 = 3, 1100 = 4, 1101 = 5, 1110 = 6, 1111 = 7 JJ II De las definiciones, se tiene J I Lema 3. La suma y la resta de dos enteros, x e y , se implementan considerando las igualdades inmediatas: Página 13 de 41 Atrás x + y + bi as = (x + bi as) + (y + bi as) − bi as x − y + bi as = (x + bi as) − (y + bi as) + bi as Para base r = 2, para números con k -bits y bi as = 2k−1 , sumar o restar bi as consiste en complementar el bit más significativo. Por tanto, en este caso la suma y la resta se implementan muy fácilmente. Pantalla grande/pequeña Cerrar Sin embargo, la implementación de la multiplicación y división son más complicadas que en otras representaciones. Enrique R. Aznar Dpto. de Álgebra Por esta razón, la representación con sesgo se suele limitar a la parte del exponente de la representación de un número en coma flotante, ya que en este caso, sólo necesitan sumarse o restarse. 2.5. Enteros con signo complementados. Definición 9. En esta representación (complement representation), se elige una constante de complementación suficientemente grande M , tal que un entero negativo x se represente por la cantidad positiva M + x . La diferencia, con la representación con sesgo, es no se la sumamos a los enteros positivos originales que se quedan tal cuál. Por tanto, para representar enteros pertenecientes al rango [−N , +P ], la constante M se elige tal que Página web personal Página de Abertura Contenido JJ II J I Página 14 de 41 Atrás N +P +1 ≤ M de esta forma se consigue que no haya solapamiento. Esto es, que la representación sea única para enteros en el rango dado. Además, tomando M = N +P +1 Pantalla grande/pequeña Cerrar se consigue un rango transformado discreto sin huecos desde 0 hasta Enrique R. Aznar Dpto. de Álgebra M −1 = N +P De forma que los negativos, [−N , −1], se transforman biyectivamente en el rango positivo, [P + 1, N + P ], invirtiendo el orden. Esto es, el rango inicial de números enteros [−N , +P ] se transforma biunívocamente en el rango de números naturales [0, N + P ] = [0, M − 1]. Como módulo M , sumar M + x equivale a sumar x (sumar M − 1 equivale a sumar −1). Así, tenemos Lema 4. La suma o resta de los enteros originales módulo M coincide con la suma módular en el rango transformado. En la aritmética modular, el resultado no se desborda. En este caso, la resta puede ser realizada complementando el sustraendo y sumando en el rango transformado. O sea, la suma y la resta son esencialmente la misma operación. Esta es la principal ventaja de la representación complementada. Página web personal Página de Abertura Contenido JJ II J I Página 15 de 41 Atrás Pantalla grande/pequeña Cerrar Esta representación también tiene sentido para números reales (positivos o negativos) con punto decimal fijo. Todos los números se representan con k +l dígitos (k dígitos enteros y l fraccionarios). En este caso, los números reales que se representan van de ul p = r en vez de ser números enteros e ir de uno en uno. −l en ul p Enrique R. Aznar Dpto. de Álgebra Además, para representar el rango [−N , +P ], la menor constante que suele tomarse es M = N + P + ul p siendo el rango transformado [0, N + P ] = [0, M − ul p]. Por ejemplo, Ejemplo 6. Para representar el rango discreto de números reales [−6.000, 5.999] Página web personal Página de Abertura que van de 0,001 en 0,001, tomamos la constante M = 12,000 = 6 + 5,999 + 0,001 Contenido JJ II J I Se obtiene un rango trasformado de [0.000, 11.999] donde los números reales positivos van también de 0,001 en 0,001. Observaremos que en este ejemplo, k = 1, l = 3, ul p = 10 Página 16 de 41 Atrás −3 Pantalla grande/pequeña y que la constante de complementación que hemos elegido es M = 12,000 = N + P + ul p de esta forma se consigue un rango transformado discreto sin huecos. O sea, biyectivo con el original. Cerrar En la representación de este ejemplo, observamos que las operaciones auxiliares necesarias para sumar o restar consisten en la complementación o sumar M = 12 y en la división módulo M = 12. Enrique R. Aznar Dpto. de Álgebra Ambas operaciones en general son más costosas que la suma o resta de números reales en el rango original. Lo que es una desventaja. Para simplificar y evitar este inconveniente se suelen elegir las siguientes dos constantes M =r Página web personal k Página de Abertura o bién M = r k − ul p = r k − r −l Definición 10. Las llamamos respectivamente complemento a la raíz, que en base r = 2 se llama complemento al dos y complemento a la raíz disminuída, que en base r = 2 se llama complemento al uno. 2.6. Complemento al dos. Tomamos una representación complementada, con constante de complementación, M = 2k . En base dos, con k bits, el rango de números representables en un sistema de complemento al dos puede ser [−2k−1 , 2k−1 − ul p] ya que entonces N + P + ul p = 2k−1 + (2k−1 − ul p) + ul p = 2k = M Contenido JJ II J I Página 17 de 41 Atrás Pantalla grande/pequeña Cerrar Aunque, puede ser otro rango cualquiera [−N , +P ] verificando Enrique R. Aznar Dpto. de Álgebra M = 2k = N + P + ul p Siempre el rango transformado será [0, N + P ] = [0, 2k − ul p]. Así, Ejemplo 7. Para representar el rango discreto de números reales binarios [−11.00, +0.11] que van de 2−2 = 0,01 en 2−2 = 0,01, se puede tomar la constante de complementación M = 22 = 100, ya que Página web personal Página de Abertura N + P + ul p = 11,00 + 0,11 + 0,01 = 100,00 = 22 y se obtiene un rango trasformado binario de [0.00, +11.11] donde los números reales positivos van también de 2−2 = 0,01 en 2−2 = 0,01. Contenido JJ II J I Página 18 de 41 La ventaja de esta representación de complemento al dos es que el cálculo del complemento de un número es muy sencilla basta complementar cada bit y luego sumar ul p . Ya que Pantalla grande/pequeña 2k − x = [(2k − ul p) − x] + ul p = x compl + ul p Cerrar donde si x es un número escrito en binario Definición 11. x compl consiste en complementar cada bit de x . Atrás Enrique R. Aznar Dpto. de Álgebra y hemos aplicado el siguiente lema inmediato. Lema 5. Si ul p = 2−l , entonces 2k − ul p = 2k − 2−l = 1 . . . 1,1 . . . 1 con k bits antes del punto y l bits después del punto. Además, x + x compl = 2k − ul p Página web personal Página de Abertura En el ejemplo anterior Contenido 2 2 −x = x compl + 0,01 k 2 Además, la reducción módulo M = 2 (en nuestro ejemplo M = 2 = 100) se hace ignorando el acarreo del dígito más significativo. Ejemplo 8. Para enteros en base r = 2, con k = 4 y l = 0, con constante de complementación M = 24 = 10000. Podemos representar el rango JJ II J I Página 19 de 41 Atrás [−8, +7] = [−1000, +0111] Pantalla grande/pequeña ya que N + P + ul p = 8 + 7 + 1 = 16 = 24 = M biunívocamente en el rango [0, N + P ] = [0, 24 − 1] = [0, 15] = [0000, 1111] Cerrar que son todos los números naturales que se pueden escribir con 4 bits. Enrique R. Aznar Dpto. de Álgebra La representación de complemento al dos tiene la ventaja de que se puede detectar fácilmente si un número representado es negativo. Basta mirar su dígito más significativo, si está activado (vale 1) es negativo y si desactivado (vale 0) es positivo. En el caso negativo, su valor se calcula restando la constante M . Así, en el último ejemplo M = 24 = 10000, el 15 = 1111 es negativo y representa al 15 − 16 = −1. Página web personal Página de Abertura Contenido Nótese que, el 1 = 0001 es el complemento al dos del 1111: 10000 − 1111 = 0001 y recíprocamente, el 1111 es el complemento al dos de 1 = 0001. Para el mismo cálculo, también se tiene el siguiente Lema 6. Si la expresión de un número binario, x , en complemento al dos es x = (x k−1 x k−2 · · · x 1 x 0 .x −1 · · · x −l )2 Entonces, el valor decimal del número representado es x = −x k−1 2k−1 + k−2 X i =−l x i 2i JJ II J I Página 20 de 41 Atrás Pantalla grande/pequeña Cerrar Demostración: Si el dígito significativo es x k−1 = 0 el número es positivo y la igualdad del lema es inmediata. Enrique R. Aznar Dpto. de Álgebra Si x k−1 = 1, el número es negativo y por definición se calcula así x = −[2k − (1x k−2 )x k−2 · · · x 1 x 0 .x −1 · · · x −l )2 ] = −2k−1 + k−2 X x i 2i i =−l 2.7. Complemento al uno. Tomamos una representación complementada, con constante de complementación, M = 2k − ul p . En base dos, con k bits, el rango de números representables en un sistema de complemento al uno puede ser [−(2k−1 − ul p), 2k−1 − ul p] ya que entonces N + P + ul p = (2 k−1 − ul p) + (2 k−1 Página web personal Página de Abertura Contenido JJ II J I k − ul p) + ul p = 2 − ul p = M Página 21 de 41 Aunque, puede ser otro rango cualquiera [−N , +P ] verificando M = 2k − ul p = N + P + ul p Siempre el rango transformado será [0, N + P ] = [0, 2k − ul p]. Así, Ejemplo 9. Para k = 4 y l = 0, con la constante es M = 15 = 1111. Se representa el intervalo de enteros [−7, +7] = [−111, +111] Atrás Pantalla grande/pequeña Cerrar Enrique R. Aznar Dpto. de Álgebra ya que entonces N + P + ul p = 7 + 7 + 1 = 15 = 24 − 1 = M siendo el rango el intervalo [0, N + P ] = [0, 2k − ul p] = [0, 15] = [0000, 1111] Pero esta representación no es biunívoca ya que el cero tiene dos representaciones 0 y también 15 = 1111 que representaría al −0. Página web personal Página de Abertura Este es un inconveniente. Aunque esta representación tiene algunas ventajas en su implematación hardware, hoy día es inusual. Observaremos, que el complemento al uno de un número x se calcula simplemente complementando cada bit, ya que por el lema 5 (2k − ul p) − x = x compl Contenido JJ II J I Página 22 de 41 Atrás 3. R EPRESENTACIÓN DE NÚMEROS REALES . Pantalla grande/pequeña Claramente, ninguna representación finita es capaz de representar todos los números reales, incluso dentro de un rango pequeño. Así pues, la mayor parte de los números reales tendrán que ser representados de una manera aproximada. Cerrar Varios métodos pueden ser usados: números con punto decimal fijo (vistos anteriormente), números racionales (que consiste en aproximar un número real por el cociente de dos enteros), sistema de numeración logarítmico (que consiste en representar un número real por su signo y su logaritmo). Enrique R. Aznar Dpto. de Álgebra Finalmente, el más utilizado que consiste en aproximar un número real por un número en coma flotante. Antes de definirlos, consideremos el siguiente Ejemplo 10. Sean dos números con punto decimal fijo Página web personal Página de Abertura x = 0000 0000. 0000 10012 y = 1001 0000. 0000 00002 observaremos que aunque el más pequeño parece más propenso a tener algún error de redondeo, ninguno de sus cuadrados x 2 , y 2 son representables en el sistema con punto decimal fijo, con k = 8 = l . En el primer caso, x 2 produce un número demasiado pequeño (underflow) mientras que y 2 produce uno demasiado grande (desbordamiento o overflow). Sin embargo, los dos números pueden ser representados en la forma científica habitual x = 1,0012 × 2−5 = 0,1001 × 2−4 y = 1,0012 × 2+7 = 0,1001 × 2+8 Contenido JJ II J I Página 23 de 41 Atrás Pantalla grande/pequeña Cerrar como ambos, 5 = 101 y 7 = 111, se pueden representar con tres bits. Los dos números anteriores se pueden codificar con siete u ocho bits como máximo. Enrique R. Aznar Dpto. de Álgebra Como el exponente positivo o negativo lo que indica es que el punto decimal se mueva a derecha o izquierda, este sistema de representación se llama de coma flotante. Página web personal 3.1. Números en coma flotante. Un número en coma flotante x = ±s × b Página de Abertura E tiene cuatro componentes: el signo, el número significante s escrito con punto decimal fijo (k=1), la base r = b que normalmente será dos o diez y el exponente E que a su vez puede ser positivo o negativo. Es generalmente aceptado que el exponente E se codifique como un entero con sesgo (biased representation), esto es su signo está integrado en el exponente y depende del valor del sesgo (bias) elegido. Ejemplo 11. Cuando el exponente es de 8 bits, el sesgo se suele elegir bi as = 127 = 27 − 1 = 11111112 y transforma el rango [−bi as, max − bi as] = [−127, 128] = [−1111111, 10000000] Contenido JJ II J I Página 24 de 41 Atrás Pantalla grande/pequeña Cerrar Enrique R. Aznar Dpto. de Álgebra en el rango [0, 255] = [0, 11111111] Así, el signo del exponente es positivo cuando su bit más significativo está activado y negativo cuando está desactivado. Sin embargo, el signo del significante se codifica en el bit más significativo con el convenio usual de que 1 representa negativo y 0 positivo (al contrario de la representación del exponente). Como hemos visto en el ejemplo 10, se pueden tomar dos representaciones en coma flotante, según consideremos significantes s ∈ [1, 2) o bien s ∈ [0, 1). O sea, según la parte entera de s valga 1 o bien 0. Aunque la famosa norma IEEE/ANSI Standard 754, para la artimética en coma flotante, recomienda sólo la primera representación s ∈ [1, 2). De esa forma se puede ahorrar un bit en la codificación del significante y codificar sólo la parte fraccionaria del mismo. En el ejemplo 10, sólo se codificarían los tres bits F = 001 que constituyen su parte fraccionaria. Así, Definición 12. Llamaremos fracción del número en coma flotante a la parte fraccionaria del significante s ∈ [1, 2). Diremos que la parte entera, 1, del significante constituye el bit oculto. Página web personal Página de Abertura Contenido JJ II J I Página 25 de 41 Atrás Pantalla grande/pequeña Cerrar Definición 13. La norma IEEE/ANSI Standard 754 establece rigurosamente la codificación a adoptar según el tamaño de palabra del ordenador: Enrique R. Aznar Dpto. de Álgebra • para 32 bits el primer bit por la izquierda (más significativo) da el signo del número, los siguientes ocho bits dan el exponente codificado con bi as = 127 y los restantes 23 bits definen la fracción F del significante que tiene siempre parte entera uno. O sea que s = 1 + F /223 ∈ [1, 2) Página web personal Página de Abertura Siendo el número x representado en coma flotante en una palabra de 32 bits igual a x = ±(1 + F /223 ) × 2E −127 • para 64 bits el primer bit por la izquierda (más significativo) da el signo del número, los siguientes once bits dan el exponente codificado con bi as = 1023 y los restantes 52 bits definen la fracción F del significante que tiene siempre parte entera uno. O sea que s = 1 + F /252 ∈ [1, 2) Siendo el número x representado en coma flotante en una palabra de 64 bits igual a x = ±(1 + F /252 ) × 2E −1023 Contenido JJ II J I Página 26 de 41 Atrás Pantalla grande/pequeña Cerrar El rango de valores en una representación de números en coma flotante está formado por la unión de dos intervalos discretos y por tanto finitos [−max, −mi n] [ Enrique R. Aznar Dpto. de Álgebra [mi n, max] donde max = ma yor Si g ni f i c ant e × b ma yor E xponent e mi n = menor Si g ni f i c ant e × b menor E xponent e Página web personal Existen por tanto cuatro regiones o intervalos de desbordamiento de números que no se pueden aproximar con precisión que se clasifican en dos. Página de Abertura Contenido Definición 14. la región de desbordamiento por abajo (underflow) es (−mi n, 0) ∪ (0, mi n) y la región de desbordamiento por arriba (overflow) es (−∞, −max) ∪ (max, +∞) La citada norma IEEE/ANSI establece además una codificación para ciertos valores límite. Por ejemplo, para 64 bits son los siguientes ±0,0, ±2−1074 F, ±∞, ±N aN (F /252 ), Cero Si E = F = 0; Caso denormal Si E = 0 y F 6= 0; Infinito Si E = 2047 y F = 0; No un Número Si E = 2047 y F 6= 0. JJ II J I Página 27 de 41 Atrás Pantalla grande/pequeña Cerrar Hoy día, prácticamente todos los ordenadores siguen al mencionada norma. Además, aunque un entero se puede representar en formato de coma flotante, tienen implementada en hardware dos ariméticas, una para enteros y otra para números en coma flotante. Enrique R. Aznar Dpto. de Álgebra La razón es que la aritmética entera es más simple y más rápida que la de coma flotante. Además, con la arimética entera, por software se pueden implementar los enteros de precisión arbitraria, (mal) llamados a veces de precisión infinita. La representación de punto fijo (fixed point) se puede considerar un caso especial extremo de la representación de coma flotante (floating point) con exponente igual a cero (haciendo éste innecesario). El otro caso extremo consiste en remover el significante, suponiendo que vale uno. Entonces se obtiene la siguiente representación. Página web personal Página de Abertura Contenido JJ II J I Página 28 de 41 3.2. Sistemas logarítmicos. Definición 15. La representación logarítmica de un número, consiste en una representación de coma flotante donde el significante no tiene parte fraccionaria, siempre vale uno y es un dígito oculto. Por ejemplo, Atrás Pantalla grande/pequeña Cerrar Ejemplo 12. Con 12 bits para exponente y en base dos, se puede definir un sistema de numeración logarítmico reservando el bit más significativo para el signo y de los 11 restantes, los cinco primeros junto con el de signo representa la parte entera del exponente en complemento al dos. Enrique R. Aznar Dpto. de Álgebra Los seis restantes bits representan la parte fracionaria del exponente en complemento al dos. Entonces, Página web personal ul p = 2−6 = 0,015625 Página de Abertura y el rango del exponente es el intervalo discreto Contenido [−32, 32 − 2−6 ] = [−32, 31.9844] donde los exponentes representados van de ul p en ul p . Los números que se pueden representar son los del rango discreto [2−32 , 231,9844 ] = [2.32831 ∗ 10−10 , 4.4878 ∗ 109 ] −6 que forman una progresión geométrica de razón 22 = 1,01089 Ejemplo 13. El número que representa la sucesión de 12 bits 110110001011 en el sistema de numeración logarítmico descrito antes con el punto decimal en la mitad se calcula de la siguiente forma: Como el bit más significativo es JJ II J I Página 29 de 41 Atrás Pantalla grande/pequeña Cerrar un uno (está activado) el y el exponente del número representado es negativo, y su valor se obtiene haciendo su complemento al dos que sale Enrique R. Aznar Dpto. de Álgebra 001001,110101 si se calcula su parte entera vale 23 + 1 = 9 Página web personal y su parte fraccionaria vale 1 1 1 1 + + + = 0,828125 2 4 16 64 Página de Abertura Contenido luego el exponente vale −9,828125 y el número representado en consecuencia es 2 −9,828125 = 0,00110012 JJ II J I Página 30 de 41 que claramente está dentro de la progresión geométrica anterior. Atrás 4. S ISTEMAS DE NUMERACIÓN RESIDUALES . Por el teorema chino de los restos, dado un número entero que sea producto de números primos entre si M = m1 · · · mr Pantalla grande/pequeña Cerrar existe un isomorfismo entre el grupo abeliano ZM y el producto directo Enrique R. Aznar Dpto. de Álgebra Zm1 × · · · × Zmr Como consecuencia, todo número entero positivo se puede representar por sus restos módulo una sucesión de enteros primos entre si m1 , m2 , . . . , mr Además esta representación es única, si el número es positivo en el intervalo semiabierto [0, M ), con M = m1 ∗ · · · ∗ mr el producto de los módulos. También se puede hacer única la representación de los números enteros, dentro de un intervalo con M enteros consecutivos. Por ejemplo, todos los números enteros positivos y negativos en el intervalo M M [−b c, d e) 2 2 Definición 16. Denotamos por R N S(m1 |...|mr ) al sistema de numeración residual correspondiente. Página web personal Página de Abertura Contenido JJ II J I Página 31 de 41 Atrás Pantalla grande/pequeña Ejemplo 14. Representa el número binario y = 10100100 en el sistema de numeración residual R N S(8 | 7 | 5 | 3). Como el primer módulo es una potencia de dos, 8 = 23 , el resto mód 8 es quedarnos con las tres últimas cifras en base dos. Cerrar Enrique R. Aznar Dpto. de Álgebra O sea, y mód 8 = 10100100 mód 23 = 100 en base dos. O sea, 4 en base 10. Para las otras cifras se puede hacer una tabla look-up, que permita hacer el cambio de base con unas pocas sumas (en vez de divisiones). Como el número y = 10100100 en base diez es la suma de la potencias de dos, correspondientes a sus bits activados, Página web personal y = 27 + 25 + 22 Página de Abertura sus residuos o restos módulo 7, o bien 5, o bien 3, se pueden obtener de la siguiente tabla de restos. Contenido j 1 2 3 4 5 6 7 8 9 2j 2 4 8 16 32 64 128 256 512 2 j Mod(7) 2 j Mod(5) 2 j Mod(3) 2 2 2 4 4 1 1 3 2 2 1 1 4 2 2 1 4 1 2 3 2 4 1 1 1 2 2 JJ II J I Página 32 de 41 Atrás Pantalla grande/pequeña Cerrar Enrique R. Aznar Dpto. de Álgebra O sea, y Mod(7) = 2 + 4 + 4 = 10 Mod(7) = 3 y Mod(5) = 3 + 2 + 4 = 9 Mod(5) = 4 y Mod(3) = 2 + 2 + 1 = 5 Mod(3) = 2 Finalmente, nuestro número y = 10100100, escrito en el sistema de numeración residual RN S(8 | 7 | 5 | 3) vale y = (4 | 3 | 4 | 2) Página web personal Página de Abertura 5. E JERCICIOS . Ejercicio 1. Dado un entero sin signo, x . Prueba Pk−1 • x = (x k−1 · · · x 1 x 0 )3 es par si y sólo si i =0 x i es par. • x = (x k−1 · · · x 1 x 0 )2 es divisible por 3 si y sólo si X X xi − xi i par i impar es múltiplo de 3. • Generaliza lo anterior para base r y divisibilidad por r − 1 y r + 1. Ejercicio 2. Dado el número negabinario x = (0001 1111 0010 1101)−2 . • Halla la representación de x en base 16 (hexadecimal). • Halla la representación de x en base −16 (negahexadecimal). Contenido JJ II J I Página 33 de 41 Atrás Pantalla grande/pequeña Cerrar ¿Sabrías describir un método para pasar de base r a −r y viceversa?. Enrique R. Aznar Dpto. de Álgebra Ejercicio 3. Calcule su DNI en binario, octal, hexadecimal y negahexadecimal. Ejercicio 4. Si α es una sucesión de ceros y unos, denotamos por u(α) el número entero, sin signo, que representa. Por s(α) el número entero con signo. Por c1(α) el entero en el sistema complemento al uno y por c2(α) el entero en complemento al dos. Sea α su DNI en binario, con 26 bits, completado con ceros a la izquierda su fuera necesario. Página web personal Página de Abertura Contenido • ¿Representa α un entero con signo o sin signo?. ¿Y con 25 bits?. En caso afirmativo diga que número negativo representa. • Calcule u(α), s(α), c1(α) y c2(α) sin completar nada. Ejercicio 5. Los enteros en el rango [−127, +127] se pueden representar con 8-bits en cualquiera de los siguientes formatos: i) enteros con signo, ii) complemento al dos, iii) complemento al uno, iv) exceso-127 y v) exceso-128. Elija uno de los tres primeros y uno de los dos excesos. Describa la conversión de números entre los dos formatos elegidos, en ambos sentidos. Ejercicio 6. A veces hace falta convertir números de 32 bits en números de 64 bits con su mismo valor. Si el número original está representado en complemento al dos o en complemento al uno y es negativo. ¿Como hay que completar los bits por la JJ II J I Página 34 de 41 Atrás Pantalla grande/pequeña Cerrar izquierda?. Si además el número tiene parte fraccionaria y el punto decimal esta centrado. ¿Como hay que completar los bits por la derecha?. Ejercicio 7. Si un número real se representa sin signo, con punto decimal, y en base dos. Correr la coma o el punto un lugar a la derecha equivale a dividir por dos. Mientras que correrla un lugar a la izquierda equivale a multiplicar por dos. Justifica o demuestra esa afirmación ¿Hay alguna regla análoga para complemento al dos o complemento al uno?. Ejercicio 8. Halla el mayor natural n tal que n! puede representarse resspecxtivamente en los siguientes formatos. • entero de 32 bits en complemento al dos. • en coma flotante de 32 bits. Enrique R. Aznar Dpto. de Álgebra Página web personal Página de Abertura Contenido JJ II J I Página 35 de 41 Ejercicio 9. En función del número de bits de su DNI, defina un sistema de numeración logarítmico. Diga cual es el rango de los exponentes que se pueden representar con ese número de bits y el rango correspondiente de números representados. ¿ Cuál es su ulp ?. Calcule el número representado en ese sistema por la sucesión de bits de su DNI. Ejercicio 10. Programe o describa una función para convertir números al sistema de numeración residual R N S(8 | 7 | 11 | 13 | 15). Atrás Pantalla grande/pequeña Cerrar 4 Represente el número d 1d 2d 3d 4d 5 en el sistema de numeración residual RN S(8 | 7 | 11 | 13 | 15). 6. Enrique R. Aznar Dpto. de Álgebra B IBLIOGRAFÍA [1] Parhami B. Computer arithmetic. Algorithmic and hardware design, Oxford University Press, U.K., 2000. [2] Arndt J. Algorithms for programmers, fxtbook draft, hhttp://www.jjj.de/fxt/, versión del 14 de marzo de 2007. Página web personal Página de Abertura 7. T EST DE REPASO . Para comenzar el cuestionario pulsa el botón de inicio. Cuando termines pulsa el botón de finalizar. Para marcar una respuesta coloca el ratón en la letra correspondiente y pulsa el botón de la izquierda (del ratón). Contenido JJ II J I Página 36 de 41 Atrás Pantalla grande/pequeña 1. ¿Cuál de las siguientes afirmaciones es verdadera?. (a) El sistema decimal es un sistema posicional pero el octal no. 4es el número decimal formado por sus 5 primeros dígitos de su DNI. Cerrar (b) El sistema binario, el sistema decimal y el octal son posicionales peor el hexadecimal no. (c) Todos los sistemas de numeración son posicionales. (d) Los sistemas binario, octal, decimal y hexadecimal son posicionales pero el residual no. 2. ¿Cuál de las siguientes afirmaciones es verdadera?. (a) Un sistema posicional de raíz fija r sólo puede usar los dígitos enteros del rango [0, r − 1]. (b) Un sistema posicional de raíz fija 3 puede usar los dígitos {0, 1, 2} o bien {−1, 0, 1}. Pero ningún otro conjunto de dígitos. (c) Un sistema posicional de raíz fija 2 puede usar como dígitos dos enteros cualesquiera {a, b} siempre que uno sea par y el otro impar. (d) Un sistema posicional de raíz fija r puede usar cualquier conjunto de dígitos siempre que sea de tamaño r . 3. ¿Cuál de las siguientes afirmaciones es verdadera?. (a) Para medir ángulos se suele usar un sistema posicional de raíz mixta pero para medir tiempo no. (b) Tradicionalmente, se han usado sistemas posicionales de raíz mixta para medir peso, distancias, áreas, ángulos, tiempo etc. Enrique R. Aznar Dpto. de Álgebra Página web personal Página de Abertura Contenido JJ II J I Página 37 de 41 Atrás Pantalla grande/pequeña Cerrar (c) Los sistemas posicionales de raíz mixta no pueden tener punto fijo. O sea, no sirven para medir fracciones. (d) Hoy día todos los sistemas son posicionales de raíz fija. 4. ¿Cuál de las siguientes afirmaciones es verdadera?. (a) ul p es el mayor número real, estricto positivo, que puede representarse con un vector de k + l dígitos. (b) En un sistema de punto fijo sólo se pueden representar números reales positivos. (c) En un sistema de punto fijo se pueden representar todos los números reales del entorno [0, max] (d) ul p sirve para definir la progresión geométrica de los números reales representados. 5. ¿Cuál de las siguientes afirmaciones es verdadera?. (a) Los enteros con signo se representan con el convenio de que el bit más significativo activado significa negativo. (b) En la representación de los enteros con signo en [−r k−1 , r k−1 ], el cero tiene representación única. (c) En la representación con sesgo, el cero tiene dos representaciones. (d) La representación con sesgo del cero depende del intervalo. Enrique R. Aznar Dpto. de Álgebra Página web personal Página de Abertura Contenido JJ II J I Página 38 de 41 Atrás Pantalla grande/pequeña Cerrar 6. ¿Cuál de las siguientes afirmaciones es verdadera?. (a) La representación exceso-127 es una representación complementada con constante M = 127. (b) En una representación complementada, para los enteros pertenecientes al rango [−N , +P ], siempre se elige la constante de complementación tal que N + P + 1 < M (c) En una representación complementada, para números reales en el rango [−N , +P ], se suele elegir la constante de complementación tal que Enrique R. Aznar Dpto. de Álgebra Página web personal Página de Abertura Contenido N + P + ul p = M (d) La representación con sesgo utiliza constante M pero la complementada no. 7. ¿Cuál de las siguientes afirmaciones es verdadera?. (a) En complemento al dos, con k bits, sólo se representan números del rango [−2k−1 , 2k−1 − ul p]. (b) Para calcular el opuesto de un número binario, en el sistema de complemento al dos, primero se complementa bit a bit y luego se suma ul p . (c) Con k bits, en el sistema de complemento al dos, la constante de complementación es 2k−1 . JJ II J I Página 39 de 41 Atrás Pantalla grande/pequeña Cerrar 2 (d) En complemento al dos, con constante M = 2 = 100, no se puede representar el rango discreto de números reales binarios [−10.00, +1.11]. 8. ¿Cuál de las siguientes afirmaciones es verdadera?. (a) En complemento al uno, con k bits, sólo se representan números del rango [−(2k−1 − ul p), 2k−1 − ul p]. (b) Para calcular el opuesto de un número binario, en el sistema de complemento al uno, se complementa bit a bit. (c) Con k bits, en el sistema de complemento al uno, la constante de complementación es 2k . (d) En complemento al uno, con constante M = 22 = 100, no se puede representar el rango discreto de números reales binarios [−10.00, +1.11]. 9. ¿Cuál de las siguientes afirmaciones es verdadera?. (a) La codificación de un número en coma flotante requiere escribir el bit oculto en el bit más significativo. (b) El signo del exponente de un número en coma flotante se escribe en el bit más significativo. (c) En sistema de coma flotante, el exponente siempre se codifica con sesgo, bi as = 127. (d) La norma IEEE/ANSI Standard 754, es para números en coma flotante de 32 o 64 bits. Enrique R. Aznar Dpto. de Álgebra Página web personal Página de Abertura Contenido JJ II J I Página 40 de 41 Atrás Pantalla grande/pequeña Cerrar 10. ¿Cuál de las siguientes afirmaciones es verdadera?. (a) La representación logarítmica de un número, consiste en una representación de coma flotante donde no hay significante. (b) La representación logarítmica de un número, consiste en una representación de coma flotante donde sólo hay exponente y es positivo. (c) Con la representación logarítmica podemos representar algunos números reales positivos o negativos. (d) En un sistema de representación residual, no importa el orden de los módulos. Las cifras son las mismas escritas en otro orden. Enrique R. Aznar Dpto. de Álgebra Página web personal Página de Abertura Contenido JJ II J I Página 41 de 41 Atrás Pantalla grande/pequeña Cerrar