Vous êtes sur la page 1sur 16

Representacin de nmeros naturales

2 Representacin de nmeros naturales


Juan J. Navarro Toni Juan Primera versin: 09-2007. Versin actual: 02-2011

2.1

Introduccin

Existen diferentes formas de representar valores numricos. De momento, en este captulo, nos limitamos a representar nmeros del conjunto de los naturales: N = { 0, 1, 2, } (en ingls, unsigned integers o non-negative integers). Ms adelante, en el captulo 4, veremos cmo representar nmeros del conjunto de los enteros: Z = {, 2, 1, 0, 1, 2, } (signed integers o simplemente integers). En este captulo 2, si no se indica lo contrario, cuando hablemos de nmeros nos referimos siempre a nmeros naturales. Un nmero es un ente abstracto. Podemos pensar en tres manzanas y representarlas en nuestra imaginacin fcilmente. Sabemos desde bastante pequeos qu significa el nmero tres. Despus aprendemos a contar y somos capaces de contar por ejemplo veintiocho manzanas, pero no las podemos representar en nuestra imaginacin como hacamos con las tres. Para nmeros grandes necesitamos un sistema de representacin de nmeros que sea potente, que permita representar nmeros grandes. Estamos acostumbrados a representar los nmeros naturales en base 10, en el sistema de numeracin decimal. Los computadores cuando trabajan con nmeros naturales (los representan y los procesan) lo hacen en un sistema de representacin muy parecido al decimal, pero ms eficiente para el computador: el sistema binario. Como es parecido, vamos a empezar por repasar lo que sabemos del sistema decimal. Adems de esta pequea introduccin, en este captulo hay dos grandes secciones. En la seccin 2.2 presentamos los sistemas convencionales en base b, empezando por el decimal y el binario, generalizando despus a una base genrica b, y tratando el sistema hexadecimal (b=16) como un ejemplo ms, que tambin usaremos en este curso. En la seccin 2.3 estudiamos los procedimientos de cambio de base: dada la representacin de un nmero en decimal, binario o hexadecimal, cmo obtener su representacin en cualquiera de las otras bases, de los otros sistemas.

Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Introduccin a los Computadores

2.2
2.2.1

Sistema convencional en base b


Decimal

En el sistema decimal tenemos diez smbolos diferentes para representar cada uno de los nmeros naturales del cero al nueve: 0, 1, 2, 3,..., 8, y 9. Estos diez smbolos se denominan dgitos, tal vez porque son diez y tenemos diez dedos (en la escuela tambin se les denomina cifras). En nuestra infancia, a la vez que aprendemos el concepto de nmero, aprendemos de memoria cada uno de estos smbolos y su significado. Pero, qu pasa cuando se trata de un nmero ms grande? No podemos inventarnos smbolos diferentes para cada uno de los infinitos nmeros naturales. Incluso para un conjunto de nmeros relativamente pequeo, como por ejemplo 1000, sera difcil conocer y usar esos posibles 1000 smbolos diferentes. En el sistema decimal, un nmero mayor que 9 se representa mediante un vector de dgitos. As, representamos el cinco mil doscientos cincuenta y seis como: 5256. Decimos que un nmero se representa por un vector de dgitos porque la posicin que ocupa cada dgito en la secuencia es importante: es un sistema posicional. No cuenta lo mismo el cinco que est a la izquierda de la cadena que el que est entre el 2 y el 6, aunque los dos son el mismo smbolo. No es lo mismo el 5256 que el 2565, aunque en las dos representaciones aparecen los mismos dgitos. En el 5256, el 5 de la izquierda vale por 5000, mientras que el otro 5 slo vale 50. El peso que tiene el dgito 5 de ms a la izquierda del ejemplo es de 1000 (y por eso vale 5x1000) y el del otro 5 es de 10. El peso de cada dgito depende de la posicin que ocupa en el vector que representa el nmero y estos pesos son las potencias de 10. As, el vector de dgitos 5256 es una representacin del nmero que resulta de calcular:
5 1000 + 2 100 + 5 10 + 6 1

Que expresado usando las potencias de 10 (100=1, 101=10, 102=100, 103=1000,...) es:
5 10 + 2 10 + 5 10 + 6 10
3 2 1 0

Vamos a formalizar esto. En general, el vector de dgitos

x n 1 xn 2 x 2 x1 x0

con

x i { 0, 1, 2, ..., 8, 9 } representa, en el sistema decimal, el nmero natural con valor: x n 1 10


n1

+ x n 2 10

n2

+ + x 2 10 + x 1 10 + x 0

que usando la notacin del sumatorio se expresa como:


n1

xi 10
i=0

Esta frmula expresa el valor del nmero en funcin de los dgitos que lo representan. Si realizamos las operaciones de multiplicacin de los dgitos por las potencias de 10 y las sumas de los resultados usando el sistema decimal, obtenemos, claro est, el nmero representado en decimal.

Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Representacin de nmeros naturales

2.2.2

Binario

En un computador los nmeros naturales se representan en el sistema binario. Una de las diferencias con el decimal es que en binario slo hay dos smbolos o dgitos diferentes en vez de los 10 del decimal: el 0 y el 1. El valor numrico que representan estos dos smbolos es el mismo que representan el 0 y el 1 en decimal. En binario, cada uno de los dgitos se denomina dgito binario, o simplemente bit (binary digit). La otra diferencia entre binario y decimal es que el peso de los dgitos segn la posicin que ocupan en el vector que representa al nmero sigue las potencias de 2 en vez de las de 10. De la representacin de un nmero a su valor Definimos el sistema binario de representacin de nmeros naturales como sigue. El vector de n bits X = x n 1 x n 2 x 2 x 1 x 0 , con x i { 0 ,1 } , representa en binario al nmero natural (unsigned) que denotamos Xu, siendo:
Xu = xn 1 2
n1

+ xn 2 2

n2

+ + x 2 2 + x 1 2 + x 0 2

Que abreviadamente se puede expresar usando la notacin del sumatorio como:


n1

Xu =

xi 2
i=0

Una vez ms, si realizamos los clculos de la expresin anterior usando el sistema de representacin decimal, que es el que solemos usar las personas para realizar operaciones matemticas, obtendremos el valor del nmero representado en decimal. Ejemplo 1
X = 01011 representa en binario al valor: X u = 0 2 + 1 2 + 0 2 + 1 2 + 1 2 , que en
4 3 2 1 0

decimal se representa por 11. Ejemplo 2 10011011 representa al 155 si interpretamos el vector de bits como un nmero natural en binario. Ejemplo 3 En la columna de la izquierda de la figura 2.1 se muestra la representacin (vector de bits) de los nmeros naturales del 0 al 15 usando el sistema binario y en la columna de la derecha el nmero natural que representa cada vector de bits (usando para ello la representacin en decimal). Notacin En el computador, un vector de n bits (las tensiones elctricas binarias en n cables ordenados) puede representar muchas cosas diferentes, segn la regla de codificacin usada. As que, dado un vector de bits, para saber qu representa hay que saber con qu sistema de representacin hay que interpretarlo. Por ejemplo, el vector de bits 1001 puede representar: al nmero 9, si lo interpretamos como un

Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Introduccin a los Computadores

Vector de bits X= x3 x2 x1 x0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1

Valor Xu 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Fig. 2.1 Tabla de la representacin en binario de los nmeros naturales del 0 al 15.

nmero natural representado en binario; al nmero -7, si lo interpretamos como un nmero entero representado en complemento a dos (como veremos en el captulo 4); o incluso puede representar un pltano, si usamos una tabla de codificacin de frutas tropicales que no mostramos aqu. En general, al vector de bits lo denotamos con una letra o nombre en maysculas, por ejemplo X o DATA, y al valor, al nmero natural que representa ese vector de bits, lo denotaremos con la misma letra o nombre pero con el subndice u de unsigned, que indica que hemos usado el sistema de representacin de nmeros naturales en el computador, el sistema binario, para interpretar el vector de bits. Por ejemplo, Xu o DATAu. Esto nos ayuda a diferenciar los naturales de otros tipos de datos)1. 2.2.3 Generalizacin: sistema convencional en base b

Tanto el sistema de representacin decimal como el binario son sistemas posicionales: la posicin del dgito dentro del vector es importante para la representacin. No pesa lo mismo el dgito x1 que el x3, aunque los dos dgitos sean iguales. Al dgito de ms a la izquierda del vector de n bits, xn-1, se le denomina dgito de mayor peso de la representacin (de X) y al de ms a la derecha, x0, dgito de menor peso. Los dos sistemas, decimal y binario, son sistemas con base fija: el peso del dgito i es bi (la base b es la misma para todas las posiciones i del vector de dgitos). La diferencia entre ellos es que en decimal la base b es 10 y en binario es 2. En ambos sistemas los dgitos pueden valer 0 x i b 1 . A continuacin definimos la generalizacin para cualquier base b de este tipo de sistema que se denomina sistema convencional en base b, del que son un caso particular el decimal y el binario.
1. El valor que resulta de interpretar el vector de bits como un nmero entero (signed) representado en el sistema que usa el computador lo denotamos con el subndice s de signed, como veremos en el captulo 4. Por ejemplo: Xs, o DATAs.

Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Representacin de nmeros naturales

2.1

En el sistema convencional en base b, para b N con b > 1, el vector de n bits X = x n 1 x n 2 x 2 x 1 x 0 con x i { 0 ,..., b -1 } , representa al nmero con valor:
Xu = xn 1 b
n1

+ xn 2 b

n2

+ xn 3 b

n3

+ + x 2 b + x 1 b + x 0 ,

(EQ 1)

que con la notacin del sumatorio se expresa como:


n1 i

Xu =

xi b
i=0

(EQ 2)

2.2.4

Hexadecimal

De los sistemas convencionales en base b, adems del decimal (b=10) y del binario (b=2), tambin usaremos el sistema hexadecimal (b=16). Del hexadecimal slo queda aclarar temas de notacin. Ni en decimal ni en binario hemos separado con comas los dgitos del vector que representa un nmero, a diferencia de lo que suele hacerse en matemticas con los vectores. Es ms cmodo escribir 5256 que (5, 2, 5, 6). Si hacemos lo mismo para el sistema hexadecimal, base b=16 y dgitos x i { 0 , ..., 15 } , tenemos un problema. El vector de dgitos hexadecimales 113 es el (1, 1, 3), el (11, 3) o el (1, 13)? Segn lo consideremos estamos representando el 275, el 179 o el 29, y no es lo mismo. As que en hexadecimal, o separamos los dgitos por comas o tenemos que inventarnos un smbolo diferente para cada uno de los dgitos con valor 10, 11,..., 15. Por convenio, en hexadecimal, a los dgitos con valor 10, 11,..., 15 se les asigna las letras A, B,..., F, respectivamente. De esta forma tampoco hace falta separar con comas los dgitos hexadecimales del vector. As, el vector de dgitos hexadecimales (2, 11, 13, 5) lo escribimos como 2BD5. El valor del nmero representado en hexadecimal por 2BD5 es: 2 16 + 11 16 + 13 16 + 5 16 , que en decimal queda representado por el vector de dgitos 11221. Una vez ms obtenemos la representacin del nmero en decimal si realizamos las operaciones de la expresin anterior en decimal. Otra cuestin de notacin. Cuando en el computador tenemos un vector X de n bits (y en un computador n suele ser grande: 8, 16, 32 o 64) se suele usar el sistema hexadecimal para representar por escrito el vector de n bits, ya que en hexadecimal necesitamos solamente n/4 dgitos: es menos probable cometer errores y es trivial pasar de la representacin binaria a hexadecimal y viceversa, como veremos en la seccin 2.3.3. Por ejemplo, para n = 16, si tenemos X = 1000110101111010 es mejor escribir X = 8D7A. Esto se hace por claridad, independientemente que X represente un nmero natural, entero, una fruta o cualquier otra cosa. Cuando la expresin sea en hexadecimal, para diferenciarla de la representacin en binario, pondremos el prefijo 0x antes del vector de dgitos hexadecimales, X = 0x8D7A. Por ltimo, usaremos el sistema decimal para expresar el valor concreto Xu, que es el sistema usual entre nosotros. Por ejemplo, para X = 0x8D7A, escribiremos Xu = 36218.
3 2 1 0

Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Introduccin a los Computadores

2.2.5

Rango de la representacin en un sistema convencional

El rango de la representacin de un sistema convencional en base b indica qu nmeros naturales se pueden representar con ese sistema usando un vector de n dgitos. De la EQ (1), o de la EQ (2), se deduce que el menor valor para Xu se da cuando todos los sumandos valen cero: todos los dgitos valen 0 (ya que Xu no puede tomar valores negativos, pues los dgitos y la base son por definicin positivos). Por lo tanto, el menor valor de Xu es 0. Cul es el mayor nmero que se puede representar en base b con n dgitos? De las mismas ecuaciones se deduce que el mayor valor de Xu se obtiene cuando el valor de cada dgito sea el mayor posible: cuando todos los dgitos valgan b-1. Cul es este nmero? Veamos primero algunos casos concretos. En decimal con, por ejemplo, 5 dgitos, este nmero es el 99999. Si sumamos 1 al 99999 sabemos que nos da el 100000, que es la quinta potencia de diez: 105. As que podemos decir que el mayor entero representable con 5 dgitos en decimal es el 105-1, y con n dgitos es el 10n-1. Veamos que pasa en binario. Con 3 bits, ver la tabla de la figura 2.1, el mayor nmero representable es el 7 (que se representa en binario por 111) y con 4 bits es el 15, (1111). Como en binario todava no sabemos sumar (lo estudiaremos en el captulo 3) podemos ver en la tabla de la figura 2.1 que si sumamos 1 al 7 (111) da el 8 (1000). Pasa algo parecido al decimal: 8 es la tercera potencia de dos: 23. As que el mayor nmero que se puede representar con 3 bits en binario es el 23-1. Con 4 bits se puede representar hasta el 24-1 (el 24, 16, se representa en binario como 10000 y el 16-1 como 1111). Y con n bits se puede representar hasta el 2n-1. Esto tambin se puede obtener para la base general b manipulando la
n1 n1 i

expresin

( b 1 )b
i=0

= (b 1)

b
i=0

= = b 1 . Por lo que el mayor nmero es el bn-1.

Por ltimo, sabemos que hay bn combinaciones diferentes de n dgitos ya que cada dgito puede tomar b valores diferentes. Estos bn diferentes vectores de n dgitos representan bn nmeros naturales diferentes en el sistema convencional en base b. Esos nmeros no pueden ser otros que los bn que hay entre el mnimo (0) y el mximo (bn-1) representables, ambos incluidos. De todo esto concluimos lo siguiente.

2.2

En el sistema convencional en base b, el rango de representacin con n dgitos es:


0 Xu b 1
n

(EQ 3)

2.2.6

Extensin de rango en un sistema convencional

Dado el vector de n dgitos que representa a un nmero natural en el sistema convencional en base b, veamos como encontrar la representacin del mismo nmero en el mismo sistema pero con n+1 dgitos. Podemos plantear el problema como el de resolver la siguiente ecuacin con restricciones.

Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Representacin de nmeros naturales

Dado xi con 0 x i b 1 , encontrar W = w n w n 1 w n 2 w 2 w 1 w 0 tal que se cumpla:


n1 n i

xi b
i=0

wi b
i=0

con la restriccin 0 w i b 1 .

La solucin es trivial:
wi = xi wn = 0.

para i = 0, 1, ..., n-1 y

Esto ya lo sabamos para el sistema decimal, pero es generalizable a los sistemas convencionales de cualquier base, como acabamos de demostrar.

2.3

Dada la representacin con n dgitos de un nmero natural en un sistema convencional en base b (y por tanto en decimal, binario o hexadecimal), para obtener la representacin de ese mismo nmero en ese mismo sistema (con la misma base) pero con n+1 dgitos solamente hay que aadir un dgito con valor 0 a la izquierda de la representacin original. Este proceso de extensin de rango se puede aplicar repetidas veces hasta obtener la representacin con los dgitos deseados.

Ejemplo 4 La representacin del nmero binario 10110 con 8 bits es 00010110. Otro ejemplo, la representacin del nmero hexadecimal 0x2A con cuatro dgitos es 0x002A. 3

2.3
2.3.1

Cambios de base entre sistemas convencionales


De base b a base 10 (de X a Xu)

A partir de la representacin de un nmero en base b, X = x n 1 x n 2 x 2 x 1 x 0 con x i { 0 ,..., b -1 } , veamos cmo encontrar la representacin del mismo nmero en base 10. La propia definicin de sistema convencional en base b nos da directamente la frmula a aplicar para ello: EQ (2). De hecho, ya hemos dicho que al evaluar esta frmula expresando los dgitos y b en decimal y multiplicando y sumando en decimal obtenemos el valor del nmero representado en decimal, que es lo que buscamos. Esto ya lo hemos hecho para el caso de b=2 en los ejemplos 1, 2 y 3. An as veamos otro ejemplo. Ejemplo 5 De binario a decimal Vamos a obtener la representacin en decimal del nmero binario 10110111. Para ello aplicamos la EQ (2), representando los valores de los dgitos y la base en decimal. Representar en decimal un dgito binario es trivial, no hay que hacer nada, la representacin del 0 y del 1 en binario y en decimal es la misma. Expandiendo la frmula y sustituyendo por los valores del ejemplo queda:

Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Introduccin a los Computadores

Xu = 1 2 + 0 2 + 1 2 + 1 2 + 0 2 + 1 2 + 1 2 + 1 2 = =1 128 + 0 64 + 1 32 + 1 16 + 0 8 + 1 4 + 1 2 + 1 1 = =128 + 32 + 16 + 4 + 2 + 1 = 183

Para aplicar esta frmula con rapidez es conveniente saber de memoria las potencias de 2. Hay que sumar las potencias de dos, 2i, para las posiciones i del vector en las que el dgito vale 1. La siguiente tabla muestra las primeras de ellas.
Tabla 2.1 Primeras potencias de dos i 2i 12 4096 11 2048 10 1024 9 512 8 256 7 128 6 64 5 32 4 16 3 8 2 4 1 2 0 1

Ejemplo 6 De hexadecimal a decimal A30E representa en hexadecimal al nmero natural que en decimal se representa por 41742. Esto es, si X=0xA30E, los dgitos son x3=A, x2=3, x1=0 y x0=E. Para obtener el valor del nmero expresado en decimal hay que representar el valor de los dgitos y de la base de la EQ (2) en decimal y realizar las operaciones en decimal, que es como las sabemos hacer. Los dgitos hexadecimales menores o iguales que 9 se representan igual en decimal que en hexadecimal, mientras que los dgitos hexadecimales A, B, C, D, E y F se representan en decimal por 10, 11, 12, 13, 14, 15 y 16 respectivamente. Siguiendo la EQ (2) tenemos:
X u = 10 16 + 3 16 + 0 16 + 14 16 = =10 4096 + 3 256 + 14 = 40960 + 768 + 14 = 41742
3 2 1 0

2.3.2

De base 10 a base b (de Xu a X)

Dado un nmero representado en base 10 veamos cmo encontrar su representacin en otra base b (nosotros trabajamos solamente las bases b=2 y b=16, pero lo que hacemos es general para cualquier b).1 Encontrar la representacin es lo mismo que encontrar el valor de las incgnitas xn-1, xn-2,..., x2, x1 y x0, tales que cumplan con la siguiente ecuacin (Xu y b son conocidos, no son ninguna incgnita):
Xu = xn-1bn-1 + xn-2 bn-2 +... + x2 b2 + x1 b +x0
(EQ 4)

1.

El procedimiento podra ser idntico al usado para pasar de base b a base 10: aplicar la EQ (2). Para ello habra que representar los dgitos decimales en base b y realizar en base b las multiplicaciones y sumas de EQ (2). Pero este mtodo no es operativo para nosotros, que de momento solamente sabemos multiplicar y sumar nmeros representados en decimal. Por eso, para evitar operar en base b, presentamos otro mtodo que requiere solamente hacer divisiones en base 10.

Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Representacin de nmeros naturales

En general, una sola ecuacin con n incgnitas, para n>1, tiene infinitas soluciones. Una de estas soluciones es, por ejemplo, x0 = Xu y xn-1 = xn-2 = ... = x2 = x1 = 0. Pero para valores de Xu mayores o iguales que b esta solucin no nos satisface, ya que en estos casos Xu no puede ser un dgito. As que, para que las soluciones de la EQ (4) sean dgitos en el sistema en base b, las soluciones tienen que cumplir una restriccin que no habamos formulado todava:
0 xi < b para x i = 0, , n-1
(EQ 5)

Para encontrar los valores de xi que cumplen con la EQ (4) y con la restriccin de la EQ (5), sacamos el factor comn b de todos los sumandos de la EQ (4) excepto de x0 (ya que b no multiplica a x0).
Xu = ( xn 1 b
n2

+ xn 2 b

n3

+ xn 3 b

n4

+ + x 2 b + x 1 ) b + x 0

(EQ 6)

De la prueba de la divisin que aprendimos en la escuela, sabemos que el dividendo es igual al cociente por el divisor ms el resto. La EQ (5) tiene la forma de la prueba de la divisin si Xu es el dividendo y b el divisor. Esto es, dividiendo Xu entre b (esta divisin la sabemos hacer en decimal, ya que tenemos expresado en decimal Xu) obtenemos que el cociente, que llamamos C1, es:
C1 = xn 1 b
n2

+ xn 2 b

n3

+ xn 3 b

n4

+ + x 2 b + x 1

(EQ 7)

El resto de la divisin es el dgito x0 de la representacin del nmero Xu en base b, que cumple con la restriccin, es menor que b, ya que es el resto de una divisin por b. Ya tenemos un dgito. Cmo encontrar los dgitos que faltan? Si nos fijamos en la EQ (7) vemos que tiene la misma forma que la EQ (4) pero con un trmino menos. Si repetimos lo hecho anteriormente, sacando el factor comn b de todos los sumandos de la EQ (7) excepto de x1, tenemos,
C1 = ( xn 1 b
n3

+ xn 2 b

n4

+ + x 3 b + x 2 ) b + x 1

Si ahora dividimos C1 (que tenemos expresado en decimal) entre b, el resto de esta nueva divisin es el dgito x1 que estamos buscando. El cociente de esta ltima divisin, que denotamos por C2, es:
C2 = xn 1 b
n3

+ xn 2 b

n4

+ + x 3 b + x 2

Como vemos, esta expresin tiene la misma forma que las EQ (4) y EQ (7) pero con un sumando menos que la EQ (7). As que podemos repetir el proceso y seguir dividiendo cada cociente resultante por la base hasta que el cociente resulte ser cero. Los restos de estas divisiones son los dgitos que estamos buscando.

Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

10

Introduccin a los Computadores

2.4

Procedimiento para pasar de decimal a base b. Se divide (divisin entera en decimal) el nmero Xu (que est representado en decimal) por la base b. El resto de esta divisin es el valor del dgito de menor peso de la representacin del nmero en base b. Se repite el proceso de divisin por b tomando como dividendo el cociente de la divisin anterior hasta que el cociente de la ltima divisin sea cero. Los restos de esta secuencia de divisiones son los valores de dgitos que buscamos, ordenados de menor a mayor pesoa Como los restos estn representados en decimal, si b es menor que 10 (caso del binario) estos restos ya representan directamente a los dgitos en el sistema en base b, pero si b es mayor que 10 (caso del hexadecimal) hay que representar cada resto con valor mayor que 9 con el smbolo que le corresponde en el sistema en base b.
a. Si se sigue dividiendo el cociente con valor 0 entre b se obtiene cociente cero y resto cero. Esto no es problema ya que se pueden poner todos los dgitos que se quieran con valor 0 en las posiciones de ms peso del vector de dgitos y la representacin del nmero sigue siendo la misma

Ejemplo 7 De decimal a binario Vamos a obtener la representacin en binario del nmero natural 426: dado Xu = 426, encontrar el vector de bits X que lo represente en binario. La figura 2.2 muestra las sucesivas divisiones entre 2, para obtener los bits. El resultado es X = 110101010.
426 2 02 213 2 06 01 3 106 2 0 1 06 53 2 0 13 26 2 1 06 13 2 0 1 6 2 0 1 2 2 2 0 3 2 2 1 1 2 1 0

110101010
Fig. 2.2 Divisiones sucesivas para encontrar los bits que representan 426 en binario.

Ejemplo 8 De decimal a hexadecimal Vamos a representar en hexadecimal el nmero que acabamos de representar en binario, el 426. La figura 2.3 muestra las sucesivas divisiones entre la base, 16, primero del nmero 426 y luego de los cocientes, para obtener los restos que son los dgitos hexadecimales. El resto con valor decimal 10 se codifica con el smbolo A para formar el dgito hexadecimal. El resultado es X = 1AA.

Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Representacin de nmeros naturales

11

426 16 106 26 10 10

16 1 1

16 0

160 161 162

1AA

Fig. 2.3 Divisiones sucesivas entre 16 para encontrar los dgitos de la representacin en hexadecimal del nmero natural 426.

2.3.3

De hexadecimal a binario y viceversa

Dado que 16 es igual a 24 resulta muy sencillo pasar de la representacin de un nmero natural en binario a la representacin en hexadecimal y viceversa. De binario a hexadecimal. El problema que planteamos se enuncia as. Dada la representacin en binario,
X = x n 1 x n 2 x 2 x 1 x 0 con x i { 0 ,1 } , de un nmero natural, encontrar la representacin en

hexadecimal de ese mismo nmero. Esto es, encontrar el vector de dgitos hexadecimales H = h k 1 h k 2 h 2 h 1 h 0 con h i { 0 ,...,15 } tal que Xu = Hu, o lo que es lo mismo:
n1 k1 i

xi 2
i=0

hi 16
i=0

(EQ 8)

Supongamos inicialmente n = 4k, sin perdida de generalidad, para que las expresiones resulten ms sencillas, vamos a escribirlas para n = 16 y k = 4. El sumatorio de la izquierda de la igualdad una vez desarrollado, queda as:
x15215 + x14214 + x13 213 + x12 212 +... + x727 + x6 26 + x5 25 + x424 + x323 + x2 22 + x1 2 + x0

Agrupando sumandos de cuatro en cuatro se puede sacar el factor comn de una potencia de 24, 16, distinta para cada grupo de 4 trminos del sumatorio. De los cuatro trminos de ms a la derecha se saca el factor comn 160, que es 1. De los 4 siguientes sumandos (yendo hacia la izquierda), se saca 161, de los 4 siguientes se saca 162, y de los 4 de ms a la izquierda se saca 163 (en general, 16k-1). El resultado es: (x1523 + x14 22 + x13 2 + x12)163 +... + (x723 + x6 22 + x5 2 + x4)16 + (x323 + x2 22 + x1 2 + x0)

Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

12

Introduccin a los Computadores

Tenemos que encontrar los valores de los dgitos hexadecimales, hi, tales que la expresin anterior sea igual que la expresin de la derecha de la igualdad de la EQ (8), que una vez desarrollado el sumatorio queda como sigue:
h3163 + h2162 + h116 + h0

Viendo desarrolladas as las dos expresiones, se deduce que la igualdad entre ellas se cumple si:
h0 = x323 + x2 22 + x12 + x0; h1 = x723 + x6 22 + x52 + x4 ,..., y h3 = x1523 + x1422 + x132 + x12

Los dgitos hexadecimales encontrados son vlidos ya que su valor mximo es 15, cuando los 4 bits valen 1. Esta solucin es til tanto para pasar de binario a hexadecimal como para pasar de hexadecimal a binario.

2.4

Procedimiento para pasar de binario a hexadecimal. Se agrupan de 4 en 4 los bits de la representacin binaria del nmero, empezando por los bits de menor peso. Si al final el nmero de bits no es mltiplo de 4, se completa la representacin binaria con uno, dos o tres ceros a la izquierda hasta que lo sea; con lo que el nmero representado sigue siendo el mismo (extensin de rango). Cada grupo de 4 bits representa en binario uno de los dgitos de la representacin hexadecimal del nmero. Los 4 bits de menor peso representan al dgito hexadecimal de menor peso, los 4 siguientes hacia la izquierda representan en binario al dgito de peso 16, y as hasta llegar a los 4 bits de ms peso, que representan al dgito hexadecimal de ms peso. Ahora hay que pasar individualmente de la representacin binaria de cada dgito hexadecimal a su smbolo en hexadecimal. Esto es, hay que pasar nmeros de 4 bits de binario a decimal y luego cada nmero decimal mayor que 9 (de 10 a 15) representarlo con la letra que le corresponda como dgito hexadecimal (A, B,...,F). Para los nmeros menores o iguales que 9, el smbolo del dgito decimal coincide con el hexadecimal (0, 1, 2,..., 9).

Ejemplo 9 De binario a hexadecimal Dado el nmero representado en binario mediante el siguiente vector con n=16 bits, X=1001001110111010, vamos a obtener su representacin en hexadecimal sin efectuar divisiones (encontramos H tal que Hu = Xu). Agrupando de 4 en 4 los bits de X obtenemos el valor de los k = n/ 4 = 4 dgitos hexadecimales que representan al nmero en base 16. La figura 2.4 muestra el proceso. El resultado es H = 93BA. 8

Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Representacin de nmeros naturales

13

X= 1 0 0 1 0 0 1 1 1 0 1 1 1 0 1 0 h3 h2 h1 h0

H = 93BA
Fig. 2.4 Ejemplo de paso directo de binario a hexadecimal

De hexadecimal a binario.

2.4

Procedimiento para pasar de hexadecimal a binario Es el mismo que de binario a hexadecimal pero en sentido contrario. Se pasa cada dgito hexadecimal a binario, representandolo independientemente con 4 bits. Aunque un dgito hexadecimal concreto (por ejemplo el 3) se pueda representar con menos de 4 bits (con 2 bits: 11) es necesario hacerlo con 4 bits (0011), de lo contrario el resultado final ser incorrecto. Por ltimo, se concatenan los grupos de 4 bits en el mismo orden que los dgitos hexadecimales que representan. Si la representacin resultante tiene uno, dos o tres ceros como bits de ms peso, estos se pueden quitar y el valor del nmero no se modifica.

Ejemplo 10 De hexadecimal a binario La figura 2.5 muestra el paso de la representacin hexadecimal, de 3E2B, a la binaria. Si no es necesario representar el nmero en binario con 16 bits, se pueden quitar los dos de ms peso que valen 0. El resultado es: 11111000101011. Ntese que si el dgito hexadecimal con valor 2 se hubiera representado con dos bits, 10, el resultado, 111110101011, sera incorrecto.
3E2B

0 0 1 1 1 1 1 0 0 0 1 0 1 0 1 1
Fig. 2.5 Ejemplo de paso directo de hexadecimal a binario.

Utilidad del hexadecimal. La facilidad de paso entre las representaciones binario y hexadecimal, en ambos sentidos, sin tener que realizar operaciones aritmticas (la codificacin binaria de los 16 dgitos hexadecimales es trivial) nos es til para:

Representar un vector de bits de forma compacta. Nuestro computador trabaja con datos e
instrucciones codificadas en 16 bits. Es ms cmodo y ms fcil que no cometamos errores si

Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

14

Introduccin a los Computadores

decimos, por ejemplo, que el resultado de la suma es 0x3A6D que si decimos que es 0011101001101101. Esto ya se haba dicho.

Para pasar un nmero de muchos dgitos de decimal a binario, si lo pasamos primero a hexadecimal
dividimos por cuatro el nmero de divisiones a hacer. Para pasar de binario a decimal tambin se puede pasar primero a hexadecimal, si esto nos parece mejor. 10

Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Representacin de nmeros naturales

15

Ejercicios
1. Sistema convencional ( 2.1, nivel B1, seccin 2.2.3)

Dado el vector de dgitos Q = q 7 q 6 q2 q1 q0 con qi { 0 ,..., k -1 } escribid la expresin del valor del nmero natural Q u que representa ese vector en el sistema convencional en base k. 2. Rango en el sistema convencional ( 2.2, nivel B1, seccin 2.2.5)

Expresar el rango de los nmeros naturales que se pueden representar con n dgitos en el sistema de numeracin convencional en base b, para los siguientes casos: a) n = 6, b = 10; b) n = 10, b = 2; c) n = 3, b = 16; d) n = 4, b = 8. 3. Extensin de rango en el sistema convencional ( 2.3, nivel B1, seccin 2.2.6)

Para cada una de las siguientes representaciones de nmeros naturales en el sistema convencional en base b, obtened su representacin en la misma base pero con 3 dgitos ms: a) 346 (b = 10); b) 01010 (b = 2); c) 0F1A7 (b = 16); d) 346 (b = 16). 4. De binario a decimal ( 2.4, nivel B2, seccin 2.3.1) .

Expresad en decimal el valor de los siguientes nmeros que se dan representados en binario, X = 1011, Y = 11011100, Z = 0011000111110101. 5. De hexadecimal a decimal ( 2.4, nivel B2, seccin 2.3.1)

Para cada una de las siguientes representaciones de nmeros naturales en el sistema hexadecimal, H = h k 1 h k 2 h 2 h 1 h 0 con h i { 0 ,...,15 } , indicad el valor del nmero natural representado,
Hu (usando para ello el sistema decimal, como es usual): a) 3A0F, b) 07CB, c) 346, d) 101.

6. De decimal a binario(

2.4, nivel B2, seccin 2.3.2)

Obtener la representacin en binario de los siguientes nmeros naturales que representamos en decimal como: a) 135, b) 1025, c) 99, d) 078. 7. De decimal a hexadecimal ( 2.4, nivel B2, seccin 2.3.2)

Obtener la representacin en hexadecimal de los siguientes nmeros naturales que representamos en decimal como: a) 3245, b) 221, c) 999, d) 1026 8. De binario a hexadecimal( 2.4, nivel B2, seccin 2.3.3)

Obtener la representacin en hexadecimal de los siguientes nmeros naturales que representamos en binario como: a) 100110101, b) 11111011, c) 11110, d) 1011001011101 9. De hexadecimal a binario ( 2.4, nivel B2, seccin 2.3.2)

Obtener la representacin en binario de los siguientes nmeros naturales que representamos en hexadecimal como: a) DE04, b) 110, c) 00F, d) 8217AB 10. De decimal a binario y a hexadecimal ( 2.4, nivel B2, seccin 2.3.2)

Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

16

Introduccin a los Computadores

Obtened el vector X de 8 bits que representa en binario cada uno de los siguientes nmeros naturales (expresad X tambin en hexadecimal). Indicad los casos en que el nmero no pueda representarse en binario con 8 bits: Xu= 35, Yu= 79, Zu= 145, Wu= 284.

Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Vous aimerez peut-être aussi