Llibre Tema 1 (curs 2008-2009), Monografías, Ensayos de Introducción a los Ordenadores
luthien-20
luthien-20

Llibre Tema 1 (curs 2008-2009), Monografías, Ensayos de Introducción a los Ordenadores

PDF (225 KB)
16 páginas
50Número de descargas
133Número de visitas
90%de 11 votosNúmero de votos
1Número de comentarios
Descripción
Asignatura: Introducció als Computadors, Profesor: Juan J. Navarro, Carrera: Enginyeria Informàtica, Universidad: UPC
100 Puntos
Puntos necesarios para descargar
este documento
Descarga el documento
Vista previa3 páginas / 16
Esta solo es una vista previa
3 páginas mostradas de 16 páginas totales
Descarga el documento
Esta solo es una vista previa
3 páginas mostradas de 16 páginas totales
Descarga el documento
Esta solo es una vista previa
3 páginas mostradas de 16 páginas totales
Descarga el documento
Esta solo es una vista previa
3 páginas mostradas de 16 páginas totales
Descarga el documento
RepresentacionNaturales-09-2008-v2.fm

Representación de números naturales 1

Copyright © 2008, Juan J. avarro, Toni Juan, Universitat Politècnica de Catalunya.

1 Representación de números naturales

Juan J. avarro

Toni Juan

Primera versión: 09-2007. Versión actual: 09-2008

1.1 Introducción

Existen diferentes formas de representar valores numéricos. De momento, en este capítulo, nos

limitamos a representar números del conjunto de los naturales: (en inglés, unsigned

integers o positive integers). Más adelante, en el capítulo 4, veremos cómo representar números del

conjunto de los enteros: (signed integers o simplemente integers)1. En

este capítulo, si no se indica lo contrario, cuando hablemos de números nos referimos siempre a

números naturales.

Un número es un ente abstracto. Podemos pensar en tres manzanas y representarlas en nuestra

imaginación fácilmente. Sabemos desde bastante pequeños qué significa el número tres. Después

aprendemos a contar y somos capaces de contar por ejemplo veintiocho manzanas, pero no las

podemos representar en nuestra imaginación como hacíamos con las tres. Para números grandes

necesitamos un sistema de representación de números que sea potente, que permita representar

números grandes. Estamos acostumbrados a representar los números naturales en base 10, en el sistema

de numeración decimal. Los computadores cuando trabajan con números naturales (los representan y

los procesan) lo hacen en un sistema de representación muy parecido al decimal, pero más eficiente

para el computador: el sistema binario. Como es parecido, vamos a empezar por repasar lo que

sabemos del sistema decimal.

Además de esta pequeña introducción, en este capítulo hay dos grandes secciones. En la sección 1.2

presentamos los sistemas convencionales en base b, empezando por el decimal y el binario,

generalizando después a una base genérica b, y tratando el sistema hexadecimal (b=16) como un

ejemplo más, que también usaremos en este curso. En la sección 1.3 estudiamos los procedimientos de

cambio de base: dada la representación de un número en decimal, binario o hexadecimal, cómo obtener

su representación en cualquiera de las otras bases, de los otros sistemas.

1. En el próximo curso, Estructura de Computadores I, veréis cómo representar números reales en coma flotante (floating point).

N 0 1 2 …, , ,{ }=

Z … 2– 1– 0 1 2 …, , , , ,{ , }=

2 Introducción a los Computadores

Copyright © 2008, Juan J. avarro, Toni Juan, Universitat Politècnica de Catalunya.

1.2 Sistema convencional en base b

1.2.1 Decimal

En el sistema decimal tenemos diez símbolos diferentes para representar cada uno de los números

naturales del cero al nueve: 0, 1, 2, 3,..., 8, y 9. Estos diez símbolos se denominan dígitos, tal vez

porque son diez y tenemos diez dedos (en la escuela también se les denomina “cifras”). En nuestra

infancia, a la vez que aprendemos el concepto de número, aprendemos de memoria cada uno de estos

símbolos y su significado.

Pero, ¿qué pasa cuando se trata de un número más grande? No podemos inventarnos símbolos

diferentes para cada uno de los infinitos números naturales. Incluso para un conjunto de números

relativamente pequeño, como por ejemplo 1000, sería difícil conocer y usar esos posibles 1000

símbolos diferentes.

En el sistema decimal, un número mayor que 9 se representa mediante un vector de dígitos. Así,

representamos el cinco mil doscientos cincuenta y seis como: 5256. Decimos que un número se

representa por un vector de dígitos porque la posición que ocupa cada dígito 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 símbolo. No es lo mismo el 5256

que el 2565, aunque en las dos representaciones aparecen los mismos dígitos. En el 5256, el 5 de la

izquierda vale por 5000, mientras que el otro, vale 50. El peso que tiene el dígito de más a la izquierda

del ejemplo es de 1000 (y por eso vale 5x1000) y el del otro es de 10. El peso de cada dígito depende

de la posición que ocupa en el vector que representa el número y estos pesos son las potencias de 10.

Así, el vector de dígitos 5256 es una representación del número que resulta de calcular:

Que expresado usando las potencias de 10 (100=1, 101=10, 102=100, 103=1000,...) es:

Vamos a formalizar esto. En general, el vector de dígitos con

representa, en el sistema decimal, el número natural con valor:

que usando la notación del sumatorio se expresa como:

Esta fórmula expresa el valor del número en función de los dígitos que lo representan. Si realizamos las

operaciones de multiplicación de los dígitos por las potencias de 10 y las sumas de los resultados

usando el sistema decimal, obtenemos, claro está, el número representado en decimal.

5 1000× 2 100× 5 10× 6 1×+ + +

5 10 3

× 2 10 2

× 5 10 1

× 6 10 0

×+ + +

xn 1– xn 2– … x2x1x0

xi 0, 1, 2, ..., 8, 9{ }∈

xn 1– 10 n 1–

xn 2– 10 n 2–

··· x210 2

x110 x0+ + + + +

xi10 i

i 0=

n 1–

Representación de números naturales 3

Copyright © 2008, Juan J. avarro, Toni Juan, Universitat Politècnica de Catalunya.

1.2.2 Binario

En un computador los números naturales se representan en el sistema binario. Una de las diferencias

con el decimal es que en binario sólo hay dos símbolos o dígitos diferentes en vez de los 10 del

decimal: el 0 y el 1. El valor numérico que representan estos dos símbolos es el mismo que representan

el 0 y el 1 en decimal. En binario, cada uno de los dígitos se denomina dígito binario, o simplemente

bit (binary digit). La otra diferencia entre binario y decimal es que el peso de los dígitos según la

posición que ocupan en el vector que representa al número sigue las potencias de 2 en vez de las de 10.

Definición. De la representación de un número a su valor

Definimos el sistema binario de representación de números naturalescomo sigue. El vector de n bits

con , representa en binario al número natural Xu con:

Que abreviadamente se puede expresar como:

Una vez más, si realizamos los cálculos de la expresión anterior usando el sistema de representación

decimal, que es el que solemos usar las personas para realizar operaciones matemáticas, obtendremos

el valor del número 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 número natural codificado en

binario.

Ejemplo 3

La figura 1.1 muestra una tabla con la representación (el vector de bits) de los números naturales

del 0 al 15 usando el sistema de representación binario, en la columna de la izquierda, y el valor

asociado a cada vector de bits representado en decimal, en la de la derecha.

otación

En el computador, un vector de n bits (la tensión eléctrica en n cables) puede representar muchas cosas

diferentes, según la regla de codificación usada. Así que, dado un vector de bits, para saber qué

representa hay que saber con qué sistema de representación hay que interpretarlo.

X xn 1– xn 2– …= x2x1x0 xi 0 1,{ }∈

Xu xn 1–= 2 n 1–

xn 2– 2 n 2–

··· x22 2

x12 1

x02 0

+ + + + +

Xu xi2 i

i 0=

n 1–

∑=

X 01011= Xu 0 2 4

× 1 2 3

× 0 2 2

× 1 2 1

× 1 2 0

×+ + + +=

4 Introducción a los Computadores

Copyright © 2008, Juan J. avarro, Toni Juan, Universitat Politècnica de Catalunya.

Por ejemplo, el vector de bits 1001 puede representar al número 9 si lo interpretamos como un número

natural representado en binario, al número -7 si lo interpretamos como un número entero representado

en complemento a dos (como veremos en el capítulo 4) o incluso puede representar a un plátano si

usamos una tabla de codificación de frutas tropicales que no mostramos aquí.

En general, al vector de bits lo denotamos con una letra mayúscula o un nombre en mayúsculas, por

ejemplo X, o DATA, y al valor, al número que representa ese vector de bits, lo denotaremos con la

misma letra o nombre del vector pero con el subíndice “u” de unsigned, que indica que hemos usado el

sistema de representación de números naturales, que en el computador es el sistema binario, para

interpretar el vector de bits. Por ejemplo, Xu, o DATAu. Esta notación nos ayuda a diferenciar los

naturales de los enteros (o de otros tipos de datos). El valor que resulta de interpretar el vector de bits

como un número entero (signed) representado en el sistema que usa el computador lo denotamos con el

subíndice “s” de signed, como veremos en el capítulo 4. Por ejemplo: Xs, o DATAs.

1.2.3 Sistema convencional en base b

Tanto el sistema de representación decimal como el binario son sistemas posicionales: la posición del

dígito dentro del vector es importante para la representación. No “pesa” lo mismo el dígito x1 que el x3,

aunque los dos dígitos sean iguales. Al dígito de más a la izquierda del vector de n bits, xn-1, se le

denomina “dígito de mayor peso” de la representación (de X) y al de más a la derecha, x0, “dígito de

menor peso”. Los dos sistemas, decimal y binario, son sistemas con base fija: el peso del dígito i es bi

(la base b es la misma para todas las posiciones i del vector de dígitos). La diferencia entre ellos es que

en decimal la base b es 10 y en binario es 2. En ambos sistemas los dígitos pueden valer .

.

Vector de bits

X=

x3 x2 x1 x0

Valor

Xu

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. 1.1 Tabla de la representación en binario de los números naturales del 0 al 15.

0 xi b 1–≤ ≤

Representación de números naturales 5

Copyright © 2008, Juan J. avarro, Toni Juan, Universitat Politècnica de Catalunya.

A continuación definimos la generalización para cualquier base b de este tipo de sistema que se

denomina “sistema convencional en base b”.

1.2.4 Hexadecimal

De los sistemas convencionales en base b, además del decimal (b=10) y del binario (b=2), también

usaremos el sistema hexadecimal (b=16). Del hexadecimal solo queda aclarar temas de notación. Ni en

decimal ni en binario hemos separado con comas los dígitos del vector que representa un número, a

diferencia de lo que suele hacerse en matemáticas con los vectores. Es más cómodo escribir 5256 que

(5, 2, 5, 6). Si hacemos lo mismo para el sistema hexadecimal, base b=16 y dígitos

tenemos un problema. ¿El vector de dígitos hexadecimales 113 es el (1, 1, 3), el (11, 3) o el (1, 13)?

Según lo consideremos estamos representando el 275, el 179 o el 29, y no es lo mismo. Así que en

hexadecimal, o separamos los dígitos por comas o tenemos que inventarnos un símbolo diferente para

cada uno de los dígitos con valor 10, 11,..., 15.

Por convenio, en hexadecimal, a los dígitos con valor 10, 11,..., 15 se les asigna las letras A, B,..., F,

respectivamente. De esta forma tampoco hace falta separar con comas los dígitos hexadecimales del

vector. Así, el vector de dígitos hexadecimales (2, 11, 13, 5) lo escribimos como 2BD5. El valor del

número representado en hexadecimal por 2BD5 es: , que en

decimal queda representado por el vector de dígitos 11221. Una vez más obtenemos la representación

del número en decimal si realizamos las operaciones de la expresión anterior en decimal.

Otrea cuestión de notación. Cuando en el computador tenemos un vector de n bits X (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 dígitos: es menos

probable cometer errores y es trivial pasar de la representación binaria a hexadecimal y viceversa,

como veremos en la sección 1.3.3. Por ejemplo, para n = 16, si tenemos X = 1000110101111010 es

mejor escribir X = 8D7A. Y esto se hace por claridad, independientemente que X represente un número

natural, entero, una fruta o cualquier otra cosa. Cuando la expresión sea en hexadecimal, para

diferenciarla de la representación en binario, pondremos el prefijo 0x antes del vector de dígitos

En el sistema convencional en base b, para , el vector de n bits

con , representa al número con valor:

, (EQ 1)

que con la notación del sumatorio se expresa como:

(EQ 2)

 1.2 b N∈ X xn 1– xn 2– …= x2x1x0 xi 0 ..., b-1,{ }∈

Xu xn 1– b n 1–

xn 2– b n 2–

xn 3– b n 3–

··· x2b 2

x1b x0+ + + + + +=

Xu xib i

i 0=

n 1–

∑=

 1

xi 0 ..., 15,{ },∈

2 16 3

× 11 16 2

× 13 16 1

× 5 16 0

×+ + +

6 Introducción a los Computadores

Copyright © 2008, Juan J. avarro, Toni Juan, Universitat Politècnica de Catalunya.

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.

1.2.5 Rango de la representación en un sistema convencional

El rango de la representación de un sistema convencional en base b indica qué números naturales se

pueden representar con ese sistema usando un vector de n dígitos. 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 dígitos valen

0 (ya que Xu no puede tomar valores negativos, pues los dígitos y la base son por definición positivos).

Por lo tanto, el menor valor de Xu es 0.

¿Cuál es el mayor número que se puede representar en base b con n dígitos? De las mismas ecuaciones

se deduce que el mayor valor de Xu se obtiene cuando el valor de cada dígito sea el mayor posible:

cuando todos los dígitos valgan b-1. ¿Cuál es este número? Veamos primero algunos casos concretos.

En decimal con, por ejemplo, 5 dígitos, este número 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 dígitos en decimal es el 105-1, y con n dígitos es el 10n-1. Veamos que pasa en

binario. Con 3 bits, ver la tabla de la figura 1.1, el mayor número representable es el 7 (que se

representa en binario por 111) y con 4 bits es el 15, (1111). Com en binario todavía no sabemos sumar,

lo estudiaremos en el capítulo 3, podemos ver en la tabla de la figura 1.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 número

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 también se puede obtener para la base general b manipulando la expresión

. Por lo que el mayor número es el bn-1.

Por último, sabemos que hay bn combinaciones diferentes de n dígitos ya que cada dígito puede tomar

b valores diferentes. Estos bn diferentes vectores de n dígitos representan bn números naturales

diferentes en el sistema conbencional en base b. Esos números no pueden ser otros que los bn que hay

entre el mínimo (0) y el máximo (bn-1) representables, ambos incluidos. De todo esto concluimos lo

siguiente.

En el sistema convencional en base b, el rango de representación con n dígitos es:

(EQ 3)

b 1–( )b i

i 0=

n 1–

∑ b 1–( ) b i

i 0=

n 1–

∑ ··· b n

1–= = =

 1.3

0 Xu b n

1–≤ ≤  2

Representación de números naturales 7

Copyright © 2008, Juan J. avarro, Toni Juan, Universitat Politècnica de Catalunya.

1.2.6 Extensión de rango en un sistema convencional

Dado el vector de n dígitos que representa a un número natural en el sistema convencional en b,

veamos como encontrar la representación del mismo número en el mismo sistema pero con n+1

dígitos. Podemos plantear el problema como el de resolver la siguiente ecuación con restricciones.

Dado con , encontrar

tal que se cumpla:

con la restricción .

La solución es trivial:

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

wn = 0.

Esto ya lo sabiamos para el sistema decimal, pero es generalizable a los sistemas convencionales de

cualquier base, como acabamos de demostrar.

Ejemplo 4

La representación del número binario 10110 con 8 bits es 00010110. Otro ejemplo, la

representación del número hexadecimal 0x2A con cuatro dígitos es 0x002A.

1.3 Cambios de base entre sistemas convencionales

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

A partir de la representación de un número en base b, con

, debemos a encontrar la representación del mismo número en base 10. La propia

definición de sistema convencional en base b nos da directamente la fórmula a aplicar para ello, que es

la EQ (2). De hecho ya hemos dicho que al evaluar esta fórmula expresando los dígitos y b en decimal

y multiplicando y sumando en decimal obtenemos el valor del número 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.

Dada la representación con n dígitos de un número natural en un sistema

convencional en base b (y por tanto en decimal, binario o hexadecimal), para obtener

la representación de ese mismo número en ese mismo sistema (con la misma base)

pero con n+1 dígitos solamente hay que añadir un dígito con valor 0 a la izquierda de

la representación original. Este proceso de extensión de rango, se puede aplicar

repetidas veces hasta obtener la representación con los dígitos deseados.

X xn 1– xn 2– …= x2x1x0 0 xi b 1–≤ ≤ W wnwn 1– wn 2– …= w2w1xw0

xib i

i 0=

n 1–

∑ wib i

i 0=

n

∑= 0 wi b 1–≤ ≤

 1.4

 3

X xn 1– xn 2– …= x2x1x0

xi 0 ..., b-1,{ }∈

8 Introducción a los Computadores

Copyright © 2008, Juan J. avarro, Toni Juan, Universitat Politècnica de Catalunya.

Ejemplo 5 De binario a decimal

Vamos a obtener la representación en decimal del número binario 10110111. Para ello aplicamos la

EQ (2), representando los valores de los dígitos y la base en decimal. Representar en decimal un

dígito binario es trivial, no hay que hacer nada, la representación del 0 y del 1 en binario y en

decimal es la misma. Expandiendo la fórmula y sustituyendo por los valores del ejemplo queda:

Para aplicar está fórmula 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 dígito vale 1. La siguiente

tabla muestra las primeras de ellas.

Ejemplo 6 De hexadecimal a decimal

A30E representa en hexadecimal al número natural que en decimal se representa por 41742. Esto

es, si X=A30E, los dígitos son x3=A, x2=3, x1=0 y x0=E. Para obtener el valor del número

expresado en decimal hay que representar el valor de los dígitos y de la base de la EQ (2) en

decimal y realizar las operaciones en decimal, que es como las sabemos hacer. Los dígitos

hexadecimales menores o iguales que 9 se representan igual en decimal que en hexadecimal,

mientras que los dígitos 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:

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

Dado un número representado en base 10 tenemos que encontrar su representación en otra base b

(nosotros trabajamos solamente las bases b=2 y b=16, pero lo que hacemos es general para cualquier

b).1 Esto lo palnteamos como que hay que encontrar el valor de las incógnitas xn-1, xn-2,..., x2, x1 y x0,

tales que cumplan con la siguiente ecuación (Xu y b son conocidos, no son ninguna incógnita):

Xu = xn-1b n-1 + xn-2 b

n-2 +... + x2 b 2 + x1 b +x0 (EQ 4)

Tabla 1.1 Primeras potencias de dos

i 12 11 10 9 8 7 6 5 4 3 2 1 0

2i 4096 2048 1024 512 256 128 64 32 16 8 4 2 1

Xu 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

Xu 10 16 3

× 3 16 2

× 0 16 1

× 14 16 0

× =+ + +=

=10 4096× 3 256× 14+ + 40960 768 14 41742=+ +=  5

Representación de números naturales 9

Copyright © 2008, Juan J. avarro, Toni Juan, Universitat Politècnica de Catalunya.

En general, una sola ecuación con n incógnitas, 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 solución no nos satisface, ya que en estos casos Xu no puede ser un dígito. Así que,

para que las soluciones de la EQ (4) sean dígitos en el sistema en base b, las soluciones tienen que

cumplir una restricción que no habíamos formulado todavía:

(EQ 5)

Para encontrar los valores de xi que cumplen con la EQ (4) y con la restricción de la EQ (5), sacamos el

factor común b de todos los sumandos de la EQ (4) excepto de x0 (ya que b no multiplica a x0).

(EQ 6)

De la prueba de la división que aprendimos en la escuela, sabemos que el dividendo es igual al cociente

por el divisor más el resto. La EQ (5) tiene la forma de la prueba de la división si Xu es el dividendo y

b el divisor. O sea que, dividiendo Xu entre b (y esta división la sabemos hacer en decimal, ya que

tenemos expresado en decimal Xu) obtenemos que el cociente, que llamamos C1, es:

(EQ 7)

y el resto es el dígito de menor peso, x0, de la representación del número Xu en base b, que cumple con

la restricción, es menor que b, ya que es el resto de una división por b. Ya tenemos un dígito.

¿Cómo encontrar los dígitos que faltan? Si nos fijamos en la EQ (7) vemos que tiene la misma forma

que la EQ (4) pero con un término menos. Si repetimos lo hecho antes, sacando el factor común b de

todos los sumandos de la EQ (7) excepto de x1, tenemos,

Si ahora dividimos C1 (que tenemos expresado en decimal) entre b, el resto de esta nueva división es el

dígito x1 que estamos buscando. El cociente de esta última división, que denotamos por C2, es:

Como vemos, esta expresión 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 dígitos que

estamos buscando.

1. El procedimiento podría ser idéntico al usado para pasar de base b a base 10: aplicar la EQ (2). Para ello habría que represen- tar los dígitos decimales en base b y realizar en base b las multiplicaciones y sumas de EQ (2). Pero este método no es ope- rativo para nosotros que solamente sabemos multiplicar y sumar números representados en decimal. En el capítulo 3 aprenderemos a operar en binario (para entender cómo lo hace un computador), por lo que podrémos aplicar este método. No obstante, para evitar operar en base b, presentamos otro método que requiere solamente hacer divisiones en base 10.

0 xi b<≤ para xi 0 ··· n-1, ,=

Xu xn 1– b n 2–

xn 2– b n 3–

xn 3– b n 4–

··· x2b 1

x1+ + + + +( )b x0+=

C1 xn 1– b n 2–

xn 2– b n 3–

xn 3– b n 4–

··· x2b 1

x1+ + + + +=

C1 xn 1– b n 3–

xn 2– b n 4–

··· x3b 1

x2+ + + +( )b x1+=

C2 xn 1– b n 3–

xn 2– b n 4–

··· x3b 1

x2+ + + +=

10 Introducción a los Computadores

Copyright © 2008, Juan J. avarro, Toni Juan, Universitat Politècnica de Catalunya.

Ejemplo 7 De decimal a binario

Vamos a obtener la representación en binario del número natural 426: dado Xu = 426, encontrar el

vector de bits X que lo represente en binario. La figura 1.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 número que acabamos de representar en binario, el 426. La

figura 1.3 muestra las sucesivas divisiones entre la base, 16, primero del número 426 y luego de los

cocientes, para obtener los restos que son los dígitos hexadecimales. El resto con valor decimal 10

se codifica con el símbolo A para formar el dígito hexadecimal. El resultado es X = 1AA.

Procedimiento para pasar de decimal a base b. Se divide (división entera en

decimal) el número por la base b. El resto de esta división es el valor del dígito de

menor peso de la representación del número en base b. Se repite el proceso de

división por b tomando como dividendo el cociente de la división anterior hasta que

el cociente de la última división sea cero. Los restos de esta secuencia de divisiones

son los valores de dígitos que buscamos, ordenados de menor a mayor pesoa

Como los restos están representados en decimal, si b es menor que 10 (caso del

binario) estos restos ya representan directamente a los dígitos 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 símbolo 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 dígitos que se quieran con valor 0 en las posiciones de más peso del vector de dígitos y la representación del número sigue siendo la misma

 1.5

426

213

2

02

06

0 106

2

01 3

1 53

2

06

0 26

2

13

1 1306

0

2

61

2

30

2

11

2

01

2

2 0

2 1

2 2

1 1 0 1 0 1 0 1 0

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

 6

 7

Representación de números naturales 11

Copyright © 2008, Juan J. avarro, Toni Juan, Universitat Politècnica de Catalunya.

1.3.3 De hexadecimal a binario y viceversa

Dado que 16 es igual a 24 resulta muy sencillo pasar de la representación de un número natural en

binario a la representación en hexadecimal y viceversa.

De binario a hexadecimal.

El problema que planteamos se enuncia así. Dada la representación en binario,

con , de un número natural, encontrar la representación en

hexadecimal de ese mismo número. Esto es, encontrar el vector de dígitos hexadecimales

con tal que Xu = Hu, o lo que es lo mismo:

(EQ 8)

Supongamos inicialmente que n = 4k. Y sin perdida de generalidad, para que las expresiones resulten

más sencillas, vamos a escribirlas para n = 16 y k = 4. El sumatorio de la izquierda de la igualdad una

vez desarrollado, queda así:

x152 15

+ x142 14

+ x13 2 13

+ x12 2 12

+... + x72 7 + x6 2

6 + x5 2

5 + x42

4 + x32

3 + x2 2

2 + x1 2 + x0

Agrupando sumandos de cuatro en cuatro se puede sacar el factor común de una potencia de 24, 16,

distinta para cada grupo de 4 términos del sumatorio. De los cuatro términos de más a la derecha se

saca el factor común 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 más a la izquierda se saca 163 (en general, 16k-1). El

resultado es:

(x152 3 + x14 2

2 + x13 2 + x12)16

3 +... + (x72

3 + x6 2

2 + x5 2 + x4)16 + (x32

3 + x2 2

2 + x1 2 + x0)

3

1

426

26

16

106

10 1

16

10

0

16

16 0

16 1

16 2

1 A A

Fig. 1.3 Divisiones sucesivas entre 16 para encontrar los dígitos de la representación en hexadecimal del número natural 426.

X xn 1– xn 2– …= x2x1x0 xi 0 1,{ }∈

H hk 1– hk 2– …= h2h1h0 hi 0 ...,15,{ }∈

xi2 i

i 0=

n 1–

∑ h i16 i

i 0=

k 1–

∑=

12 Introducción a los Computadores

Copyright © 2008, Juan J. avarro, Toni Juan, Universitat Politècnica de Catalunya.

Tenemos que encontrar los valores de los dígitos hexadecimales, hi, tales que la expresión anterior sea

igual que la expresión de la derecha de la igualdad de la EQ (8), que una vez desarrollado el sumatorio

queda como sigue:

h316 3 + h216

2 + h116 + h0

Viendo desarrolladas así las dos expresiones, se deduce que la igualdad entre ellas se cumple si

h0 = x32 3 + x2 2

2 + x12 + x0; h1 = x72

3 + x6 2

2 + x52 + x4 ,..., y h3 = x152

3 + x142

2 + x132 + x12

Los dígitos hexadecimales encontrados son válidos ya que su valor máximo es 15, cuando los 4 bits

valen 1. Esta solución es útil tanto para pasar de binario a hexadecimal como para pasar de

hexadecimal a binario.

Ejemplo 9 De binario a hexadecimal

Dado el número representado en binario mediante el siguiente vector con n=16 bits,

X=1001001110111010, vamos a obtener su representación 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 dígitos hexadecimales que representan al número en base 16. La figura 1.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 representación binaria del número, empezando por los bits de menor peso. Si al

final el número de bits no es múltiplo de 4, se completa la representación binaria con

uno, dos o tres ceros a la izquierda hasta que lo sea; con lo que el número

representado sigue siendo el mismo (extensión de rango).

Cada grupo de 4 bits representa en binario uno de los dígitos de la representación

hexadecimal del número. Los 4 bits de menor peso representan al dígito hexadecimal

de menor peso, los 4 siguientes hacia la izquierda representan en binario al dígito de

peso 16, y así hasta llegar a los 4 bits de más peso, que representan al dígito

hexadecimal de más peso.

Ahora hay que pasar individualmente de la representación binaria de cada dígito

hexadecimal a su símbolo en hexadecimal. Esto es, hay que pasar números de 4 bits

de binario a decimal y luego cada número decimal mayor que 9 (de 10 a 15)

representarlo con la letra que le corresponda como dígito hexadecimal (A, B,...,F).

Para los números menores o iguales que 9, el símbolo del dígito decimal coincide

con el hexadecimal (0, 1, 2,..., 9).

 1.5

 8

Representación de números naturales 13

Copyright © 2008, Juan J. avarro, Toni Juan, Universitat Politècnica de Catalunya.

De hexadecimal a binario.

Ejemplo 10 De hexadecimal a binario

La figura 1.5 muestra el paso de la representación hexadecimal, 3E2B, a la binaria del mismo

número natural. Si no es necesario representar el número en binario con 16 bits, se pueden quitar

los dos de más peso que valen 0. El resultado es: 11111000101011. Nótese que si el dígito con valor

2 se hubiera representado con dos bits, 10, el resultado, 111110101011, sería incorrecto.

Utilidad del hexadecimal.

La facilidad de paso entre las representaciones binario y hexadecimal, en ambos sentidos, sin tener que

realizar operaciones aritméticas (la codificación binaria de los 16 dígitos 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 más cómodo y más fácil 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 dígito hexadecimal a binario,

representandolo independientemente con 4 bits. Aunque un dígito 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

dígitos hexadecimales que representan. Si la representación resultante tiene uno, dos

o tres ceros como bits de más peso, estos se pueden quitar y el valor del número 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. 1.4 Ejemplo de paso directo de binario a hexadecimal

 1.5

0 0 1 1 1 1 1 0 0 0 1 0 1 0 1 1

3E2D

0 0 1 1 1 1 1 0 0 0 1 0 1 0 1 1

3E2B

Fig. 1.5 Ejemplo de paso directo de hexadecimal a binario.

 9

14 Introducción a los Computadores

Copyright © 2008, Juan J. avarro, Toni Juan, Universitat Politècnica de Catalunya.

decimos, por ejemplo, que el resultado de la suma es 0x3A6D que si decimos que es

0011101001101101. Esto ya se había dicho.

Para pasar un número de muchos dígitos de decimal a binario, si lo pasamos primero a hexadecimal

dividimos por cuatro el número de divisiones a hacer. Para pasar de binario a decimal tanbién se

puede pasar primero a hexadecimal, si esto nos parece mejor.

Representación de números naturales 15

Copyright © 2008, Juan J. avarro, Toni Juan, Universitat Politècnica de Catalunya.

Ejercicios

1. Sistema convencional ( 1.2, nivel B1, sección 1.2.3)

Dado el vector de dígitos con escribid la expresión del

valor del número natural que representa ese vector en el sistema convencional en base k.

2. Rango en el sistema convencional ( 1.3, nivel B1, sección 1.2.5) Expresar el rango de los números naturales que se pueden representar con n dígitos en el sistema de

numeración 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. Extensión de rango en el sistema convencional ( 1.4, nivel B1, sección 1.2.6) Para cada una de las siguientes representaciones de números naturales en el sistema convencional

en base b, obtened su representación en la misma base pero con 3 dígitos más: a) 346 (b = 10); b)

01010 (b = 2); c) 0F1A7 (b = 16); d) 346 (b = 16).

4. De binario a decimal ( 1.5, nivel B2, sección 1.3.1) . Expresad en decimal el valor de los siguientes números que se dan representados en binario, X =

1011, Y = 11011100, Z = 0011000111110101.

5. De hexadecimal a decimal ( 1.5, nivel B2, sección 1.3.1) (está bien enlazado, falta inventar enunciado)

6. De decimal a binario( 1.5, nivel B2, sección 1.3.2) (está bien enlazado, falta inventar enunciado)

7. De decimal a hexadecimal ( 1.5, nivel B2, sección 1.3.2) (está bien enlazado, falta inventar enunciado)

(Este enunciado hay que ponerlo en otro sitio, más al final, ver donde ya que involucra varias cosas:

Obtened el vector X de 8 bits que representa en binario cada uno de los siguientes números

naturales (expresad X también en hexadecimal). Indicad los casos en que el número no pueda

representarse en binario con 8 bits: Xu= 35, Yu= 79, Zu= 145, Wu= 284. La solución es X=

00100011= 0x23, Y= 01001111= 0x4F, Z= 10010001= 0x91 y Wu no es representable con 8 bits

(ya que se necesitarían 9: 100011100, lo cual también se puede deducir porque Wu es mayor que

255 (28-1) y se sale de rango.

8. De binario a hexadecimal( 1.5, nivel B2, sección 1.3.3) (está bien enlazado, falta inventar enunciado)

9. De hexadecimal a binario ( 1.5, nivel B2, sección 1.3.2) (está bien enlazado, falta inventar enunciado)

Q q7q6 …= q2q1q0 qi 0 ..., k-1,{ }∈

Qu

16 Introducción a los Computadores

Copyright © 2008, Juan J. avarro, Toni Juan, Universitat Politècnica de Catalunya.

Solución a los ejercicios

1.

2.

3.

4. Xu = 11, Yu = 220 y Zu = 12789.

Qu qik i

i 0=

7

∑=

Pensava que era tot el curs senser...
Esta solo es una vista previa
3 páginas mostradas de 16 páginas totales
Descarga el documento