Está en la página 1de 16

Representacin de nmeros naturales 1

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


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: (en ingls, unsigned
integers o non-negative integers). Ms adelante, en el captulo 4, veremos cmo representar nmeros
del conjunto de los enteros: (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.
N 0 1 2 , , , { } =
Z 2 1 0 1 2 , , , , , { , } =
2 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
2.2 Sistema convencional en base b
2.2.1 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:
Que expresado usando las potencias de 10 (10
0
=1, 10
1
=10, 10
2
=100, 10
3
=1000,...) es:
Vamos a formalizar esto. En general, el vector de dgitos con
representa, en el sistema decimal, el nmero natural con valor:
que usando la notacin del sumatorio se expresa como:
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.
5 1000 2 100 5 10 6 1 + + +
5 10
3
2 10
2
5 10
1
6 10
0
+ + +
x
n 1
x
n 2
x
2
x
1
x
0
x
i
0, 1, 2, ..., 8, 9 { }
x
n 1
10
n 1
x
n 2
10
n 2
x
2
10
2
x
1
10 x
0
+ + + + +
x
i
10
i
i 0 =
n 1

Representacin de nmeros naturales 3


Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
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
, con , representa en binario al nmero natural (unsigned) que
denotamos X
u
, siendo:
Que abreviadamente se puede expresar usando la notacin del sumatorio como:
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
representa en binario al valor: , que en
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
X x
n 1
x
n 2
= x
2
x
1
x
0
x
i
0 1 , { }
X
u
x
n 1
= 2
n 1
x
n 2
2
n 2
x
2
2
2
x
1
2
1
x
0
2
0
+ + + + +
X
u
x
i
2
i
i 0 =
n 1

=
X 01011 = X
u
0 2
4
1 2
3
0 2
2
1 2
1
1 2
0
+ + + + =
4 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
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, X
u
o DATA
u
. 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 x
1
que el x
3
,
aunque los dos dgitos sean iguales. Al dgito de ms a la izquierda del vector de n bits, x
n-1
, se le
denomina dgito de mayor peso de la representacin (de X) y al de ms a la derecha, x
0
, dgito de
menor peso. Los dos sistemas, decimal y binario, son sistemas con base fija: el peso del dgito i es b
i
(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 .
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: X
s
, o DATA
s
.
Vector de bits
X=
x
3
x
2
x
1
x
0
Valor
X
u
0 0 0 0 0
0 0 0 1 1
0 0 1 0 2
0 0 1 1 3
0 1 0 0 4
0 1 0 1 5
0 1 1 0 6
0 1 1 1 7
1 0 0 0 8
1 0 0 1 9
1 0 1 0 10
1 0 1 1 11
1 1 0 0 12
1 1 0 1 13
1 1 1 0 14
1 1 1 1 15
Fig. 2.1 Tabla de la representacin en binario de los nmeros naturales del 0 al 15.
0 x
i
b 1
Representacin de nmeros naturales 5
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

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
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: , 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
X
u
, que es el sistema usual entre nosotros. Por ejemplo, para X = 0x8D7A, escribiremos X
u
= 36218.
En el sistema convencional en base b, para con b > 1, el vector de n bits
con , representa al nmero con valor:
, (EQ 1)
que con la notacin del sumatorio se expresa como:
(EQ 2)
2.1
b N
X x
n 1
x
n 2
= x
2
x
1
x
0
x
i
0 ..., b-1 , { }
X
u
x
n 1
b
n 1
x
n 2
b
n 2
x
n 3
b
n 3
x
2
b
2
x
1
b x
0
+ + + + + + =
X
u
x
i
b
i
i 0 =
n 1

=
1
x
i
0 ..., 15 , { },
2 16
3
11 16
2
13 16
1
5 16
0
+ + +
6 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
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 X
u
se da cuando todos los sumandos valen cero: todos los dgitos valen
0 (ya que X
u
no puede tomar valores negativos, pues los dgitos y la base son por definicin positivos).
Por lo tanto, el menor valor de X
u
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 X
u
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: 10
5
. As que podemos decir que el mayor entero
representable con 5 dgitos en decimal es el 10
5
-1, y con n dgitos es el 10
n
-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: 2
3
. As que el mayor
nmero que se puede representar con 3 bits en binario es el 2
3
-1. Con 4 bits se puede representar hasta
el 2
4
-1 (el 2
4
, 16, se representa en binario como 10000 y el 16-1 como 1111). Y con n bits se puede
representar hasta el 2
n
-1. Esto tambin se puede obtener para la base general b manipulando la
expresin . Por lo que el mayor nmero es el b
n
-1.
Por ltimo, sabemos que hay b
n
combinaciones diferentes de n dgitos ya que cada dgito puede tomar
b valores diferentes. Estos b
n
diferentes vectores de n dgitos representan b
n
nmeros naturales
diferentes en el sistema convencional en base b. Esos nmeros no pueden ser otros que los b
n
que hay
entre el mnimo (0) y el mximo (b
n
-1) representables, ambos incluidos. De todo esto concluimos lo
siguiente.
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.
En el sistema convencional en base b, el rango de representacin con n dgitos es:
(EQ 3)
b 1 ( )b
i
i 0 =
n 1

b 1 ( ) b
i
i 0 =
n 1

b
n
1 = = =
2.2
0 X
u
b
n
1
2
Representacin de nmeros naturales 7
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Dado x
i
con , encontrar tal que se cumpla:
con la restriccin .
La solucin es trivial:
w
i
= x
i
para i = 0, 1, ..., n-1 y
w
n
= 0.
Esto ya lo sabamos para el sistema decimal, pero es generalizable a los sistemas convencionales de
cualquier base, como acabamos de demostrar.
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.
2.3 Cambios de base entre sistemas convencionales
2.3.1 De base b a base 10 (de X a Xu)
A partir de la representacin de un nmero en base b, con ,
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:
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.
0 x
i
b 1 W w
n
w
n 1
w
n 2
= w
2
w
1
w
0
x
i
b
i
i 0 =
n 1

w
i
b
i
i 0 =
n

= 0 w
i
b 1
2.3
3
X x
n 1
x
n 2
= x
2
x
1
x
0
x
i
0 ..., b-1 , { }
8 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.


Para aplicar esta frmula con rapidez es conveniente saber de memoria las potencias de 2. Hay que
sumar las potencias de dos, 2
i
, para las posiciones i del vector en las que el dgito vale 1. La siguiente
tabla muestra las primeras de ellas.
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 x
3
=A, x
2
=3, x
1
=0 y x
0
=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:


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 x
n-1
, x
n-2
,..., x
2
,
x
1
y x
0
,

tales que cumplan con la siguiente ecuacin (X
u
y b son conocidos, no son ninguna incgnita):
X
u
= x
n-1
b
n-1
+ x
n-2
b
n-2
+... + x
2
b
2
+ x
1
b +x
0
(EQ 4)
Tabla 2.1 Primeras potencias de dos
i 12 11 10 9 8 7 6 5 4 3 2 1 0
2
i
4096 2048 1024 512 256 128 64 32 16 8 4 2 1
1. El procedimiento podra ser idntico al usado para pasar de base b a base 10: aplicar la EQ (2). Para ello habra que represen-
tar los dgitos decimales en base b y realizar en base b las multiplicaciones y sumas de EQ (2). Pero este mtodo no es ope-
rativo 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.
X
u
1 2
7
0 2
6
1 2
5
1 + + + 2
4
0 2
3
1 2
2
1 2
1
1 2
0
= + + + + =
=1 128 0 64 1 32 1 + + + 16 0 8 1 4 1 2 1 1 = + + + +
=128 32 16 4 2 1 183 = + + + + +
4
X
u
10 16
3
3 16
2
0 16
1
14 16
0
= + + + =
=10 4096 3 256 14 + + 40960 768 14 41742 = + + =
5
Representacin de nmeros naturales 9
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
En general, una sola ecuacin con n incgnitas, para n>1, tiene infinitas soluciones. Una de estas
soluciones es, por ejemplo, x
0
= X
u
y x
n-1
= x
n-2
= ... = x
2
= x
1
= 0. Pero para valores de X
u
mayores o
iguales que b esta solucin no nos satisface, ya que en estos casos X
u
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:
(EQ 5)
Para encontrar los valores de x
i
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 x
0
(ya que b no multiplica a 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 X
u
es el dividendo y
b el divisor. Esto es, dividiendo X
u
entre b (esta divisin la sabemos hacer en decimal, ya que tenemos
expresado en decimal X
u
) obtenemos que el cociente, que llamamos C
1
, es:
(EQ 7)
El resto de la divisin es el dgito x
0
de la representacin del nmero X
u
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 x
1
, tenemos,
Si ahora dividimos C
1
(que tenemos expresado en decimal) entre b, el resto de esta nueva divisin es el
dgito x
1
que estamos buscando. El cociente de esta ltima divisin, que denotamos por C
2
, es:

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.
0 x
i
b < para x
i
0 n-1 , , =
X
u
x
n 1
b
n 2
x
n 2
b
n 3
x
n 3
b
n 4
x
2
b
1
x
1
+ + + + + ( )b x
0
+ =
C
1
x
n 1
b
n 2
x
n 2
b
n 3
x
n 3
b
n 4
x
2
b
1
x
1
+ + + + + =
C
1
x
n 1
b
n 3
x
n 2
b
n 4
x
3
b
1
x
2
+ + + + ( )b x
1
+ =
C
2
x
n 1
b
n 3
x
n 2
b
n 4
x
3
b
1
x
2
+ + + + =
10 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.

Ejemplo 7 De decimal a binario
Vamos a obtener la representacin en binario del nmero natural 426: dado X
u
= 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.
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.
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 peso
a

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
2.4
426
213
2
02
06
0
106
2
013
1
53
2
06
0
26
2
13
1
13
06
0
2
6 1
2
3 0
2
1 1
2
0 1
2
2
0
2
1
2
2
1 1 0 1 0 1 0 1 0
Fig. 2.2 Divisiones sucesivas para encontrar los bits que representan 426 en binario.
6
7
Representacin de nmeros naturales 11
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
2.3.3 De hexadecimal a binario y viceversa
Dado que 16 es igual a 2
4
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,
con , de un nmero natural, encontrar la representacin en
hexadecimal de ese mismo nmero. Esto es, encontrar el vector de dgitos hexadecimales
con tal que X
u
= H
u
, o lo que es lo mismo:
(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:
x
15
2
15
+ x
14
2
14
+ x
13
2
13
+ x
12
2
12
+... + x
7
2
7
+ x
6
2
6
+ x
5
2
5
+ x
4
2
4
+ x
3
2
3
+ x
2
2
2
+ x
1
2 + x
0
Agrupando sumandos de cuatro en cuatro se puede sacar el factor comn de una potencia de 2
4
, 16,
distinta para cada grupo de 4 trminos del sumatorio. De los cuatro trminos de ms a la derecha se
saca el factor comn 16
0
, que es 1. De los 4 siguientes sumandos (yendo hacia la izquierda), se saca
16
1
, de los 4 siguientes se saca 16
2
, y de los 4 de ms a la izquierda se saca 16
3
(en general, 16
k-1
). El
resultado es:
(x
15
2
3
+ x
14
2
2
+ x
13
2 + x
12
)16
3
+... + (x
7
2
3
+ x
6
2
2
+ x
5
2 + x
4
)16 + (x
3
2
3
+ x
2
2
2
+ x
1
2 + x
0
)
1
426
26
16
106
10
1
16
10
0
16
16
0
16
1
16
2
1 A A
Fig. 2.3 Divisiones sucesivas entre 16 para encontrar los dgitos de la representacin en
hexadecimal del nmero natural 426.
X x
n 1
x
n 2
= x
2
x
1
x
0
x
i
0 1 , { }
H h
k 1
h
k 2
= h
2
h
1
h
0
h
i
0 ...,15 , { }
x
i
2
i
i 0 =
n 1

h
i
16
i
i 0 =
k 1

=
12 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Tenemos que encontrar los valores de los dgitos hexadecimales, h
i
, 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:
h
3
16
3
+ h
2
16
2
+ h
1
16 + h
0
Viendo desarrolladas as las dos expresiones, se deduce que la igualdad entre ellas se cumple si:
h
0
= x
3
2
3
+ x
2
2
2
+ x
1
2 + x
0
;

h
1
= x
7
2
3
+ x
6
2
2
+ x
5
2 + x
4
,..., y h
3
= x
15
2
3
+ x
14
2
2
+ x
13
2 + x
12
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.
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 H
u
= X
u
). 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.
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).
2.4
8
Representacin de nmeros naturales 13
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
De hexadecimal a binario.
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.
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
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.
1 0 0 1 0 0 1 1 1 0 1 1 1 0 1 0
H = 93BA
X =
h
3
h
2
h
1
h
0
Fig. 2.4 Ejemplo de paso directo de binario a hexadecimal
2.4
0 0 1 1 1 1 1 0 0 0 1 0 1 0 1 1
3E2B
Fig. 2.5 Ejemplo de paso directo de hexadecimal a binario.
9
14 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
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
Representacin de nmeros naturales 15
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Ejercicios
1. Sistema convencional ( 2.1, nivel B1, seccin 2.2.3)
Dado el vector de dgitos con escribid la expresin del valor
del nmero natural 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,
con , indicad el valor del nmero natural representado,
H
u
(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)
Q q
7
q
6
= q
2
q
1
q
0
q
i
0 ..., k-1 , { }
Q
u
H h
k 1
h
k 2
= h
2
h
1
h
0
h
i
0 ...,15 , { }
16 Introduccin a los Computadores
Copyright 2011, Juan J. Navarro, Toni Juan, Universitat Politcnica de Catalunya.
Obtened el vector X de 8 bits que representa en binario cada uno de los siguientes nmeros natura-
les (expresad X tambin en hexadecimal). Indicad los casos en que el nmero no pueda represen-
tarse en binario con 8 bits: X
u
= 35, Y
u
= 79, Z
u
= 145, W
u
= 284.

También podría gustarte