Sunteți pe pagina 1din 17

2.

Numeracin 2. posicional Numeracin posicional


dgito. (Del lat. digitus, dedo). 1. m. Mat. nmero dgito. nmero dgito. 1. m. Mat. El que puede expresarse con un solo guarismo.
Diccionario de la Lengua Espaola Vigsima segunda edicin Real Academia Espaola

Los elementos usados en los computadores tienen dos estados, por lo cual en los procesadores el sistema binario es natural e incluso se impone. Esto introduce la necesidad de estudiar el sistema binario y los mtodos para hacer cambios de base. Sin embargo, en computacin, no slo se utiliza la base 2; por comodidad se suele usar la base 16 y, en raras ocasiones, la base 8. Estas bases son tiles, ya que los nmeros binarios pueden ser muy largos, y se vuelven difciles de leer; la base 16 es ms sinttica, y el cambio de base 16 a base 2 o viceversa es fcil de hacer. En este captulo, se presentan los sistemas de numeracin posicional de manera general, no solo el binario, ya que as se adquiere una mejor comprensin de su funcionamiento. El captulo empieza presentando el concepto de base de numeracin, luego de lo cual se desarrolla una formalizacin matemtica de las mismas as como algoritmos para cambio de base. 2.1 INTRODUCCIN

Qu es un nmero? Las personas que han intentado responder a esta pregunta han descubierto una cosa: los dems no estn de acuerdo con su respuesta. Debido a esto, no nos vamos a concentrar en la naturaleza de los nmeros sino en su representacin. Veremos qu hay detrs de los dgitos que usamos todos los das. Estamos acostumbrados a llamar "nmeros" a secuencias de dgitos, como por ejemplo "51". Esto no es preciso; un nmero es una entidad abstracta. Lo que s

16

Numeracin posicional

Captulo 2.

podemos decir es que la secuencia de dgitos "51" representa un nmero, as como tambin lo hacen los caracteres "LI" en la numeracin romana.1 Analicemos el problema de representar los nmeros. En primera aproximacin se puede pensar en un sistema similar al lenguaje: una palabra por objeto. Este mtodo, que intent "Funes el memorioso" en un cuento de Jorge Luis Borges, es decepcionante cuando se cae en cuenta de que hay infinitos nmeros. Se necesita un mtodo ms articulado. Se dio un paso adelante con los griegos. Ellos desarrollaron un sistema (copiado por los romanos) ms flexible aunque todava eran necesarios infinitos smbolos para poder representar todos los nmeros. Fueron los hinds quienes inventaron el sistema posicional que utilizamos hoy da. Su caracterstica fundamental es que con un conjunto finito de smbolos se puede representar un conjunto infinito de nmeros. La idea de base es sencilla; se trata de contar agrupando. Veamos un caso anlogo: se pueden contar frutas por unidades, pero si hay muchas es mejor contar por bultos de frutas; si aun estos son excesivos, se podra contar por "cargas". As, una cierta cantidad de frutas puede expresarse como: cinco cargas, tres bultos y doce unidades. El primer problema que encontramos es definir cuntas frutas componen un bulto y cuntos bultos una carga. Una solucin es la siguiente: un agrupamiento superior se compone de un nmero fijo de agrupamientos inferiores. En nuestro caso podemos considerar la carga compuesta por 20 bultos y el bulto de 20 frutas. En el ejemplo anterior tenamos 5 cargas, es decir 100 bultos (5*20); como adems tenamos 3 bultos, en total tenemos 103, cada uno con 20 frutas, lo cual da 2060 frutas; esto, ms las 12 sueltas, da 2072 frutas. En el ejemplo anterior, podemos notar que para cada nivel de agrupamiento slo necesitamos 20 nmeros bsicos: del 0 al 19. En efecto, si hay ms de diecinueve se puede trasladar parte al agrupamiento superior; por ejemplo, si hay 25 frutas podemos hablar, ms bien, de un bulto y 5 frutas. Estos "nmeros bsicos" es lo que llamamos dgitos; en nuestro ejemplo tenemos 20 dgitos El sistema que hemos mostrado es limitado, ya que el nmero mximo que podemos representar es "diecinueve cargas, diecinueve bultos y diecinueve frutas". Es claro que necesitamos agrupamientos superiores a la carga, pero si nos pusiramos a inventar ms, tendramos el mismo problema: siempre habra un lmite mximo. Por otro lado, tampoco podemos tener infinitas palabras para representar estos agrupamientos superiores. Cmo resolver este problema? Puesto que no podemos tener infinitas palabras para denotar los agrupamientos pues es mejor no tener ninguna y buscar otro mtodo: vamos a representar los agrupamientos por su posicin. As nuestro ejemplo inicial se escribira: 5, 3, 12
1

Y como la palabra perro representa un perro, sin que por ellos tenga pulgas.

2.1

Introduccin

17

No tenemos nombres para los agrupamientos, pero sabemos que, en un agrupamiento determinado, cada elemento vale por veinte de los que estn inmediatamente a la derecha, y esto es suficiente. Ahora no hay lmite para los nmeros que podemos representar; si es necesario podemos agregar ms nmeros a la izquierda que representen agrupamientos superiores. As, en el nmero: 2, 5, 3, 12 no sabemos el nombre del agrupamiento que corresponde al "2", pero sabemos que vale veinte de los anteriores (veinte cargas), cada uno de los cuales vale veinte de los anteriores, etc. Hemos cambiado la representacin de nombres a posiciones. Por supuesto, si alguno de los agrupamientos no tiene componentes, por ejemplo: "14 cargas, ningn bulto y 7 frutas", indicamos su ausencia por medio del nmero cero: 14, 0, 7 Debe notar que no hay tal cosa como un sistema "natural" para contar. Si contamos en la base diez es, probablemente, porque tenemos diez dedos; pero hay otros sistemas: los mayas tenan un sistema base veinte; a veces se cuenta por "docenas" y "gruesas", lo cual constituye un sistema base doce rudimentario; cuando se lee la hora, se est usando un sistema base sesenta (sexagesimal) casi sin darse cuenta, herencia que nos dej Mesopotamia. En nuestro ejemplo desarrollamos un sistema base veinte (vigesimal) sin mayores problemas. Cuando se usan bases inferiores a diez, los dgitos que conocemos son suficientes; sin embargo, si usamos una base superior a diez necesitamos ms dgitos. La convencin en esos casos es utilizar las letras del alfabeto. As, el dgito diez se representa por la letra "A", el dgito once por la "B" etc. Nuestro ejemplo inicial (5 cargas, 3 bultos,12 doce frutas) se escribira: (53C)20 Donde el subndice "20" indica que la base de numeracin es veinte. Tambin usaremos otra notacin: se adjunta una letra al final del nmero para indicar la base: B para binario, Q para octal, D para decimal y H para hexadecimal. Por ejemplo, diez, en cada una de estas bases, se escribe: 1010B, 12Q, 10D, AH. 2.2 FORMALIZACIN

En esta seccin se definen y modelan matemticamente los sistemas de numeracin posicional. Estudiaremos mtodos para describir en qu consiste la representacin de un nmero, y mtodos para cambiar de una representacin a otra. Los nmeros enteros Definamos la representacin de un nmero en una base b como una secuencia de enteros, cada uno de los cuales tiene un valor entre 0 y b -1. Los dgitos de este sistema son los enteros entre 0 y b -1, los dos inclusive.

18

Numeracin posicional Sea b > 1. Definimos: Dgitosb = { x | 0 x < b } Representacinb = { (dn d0) | di Dgitosb } Por ejemplo, en el sistema base 2 (binario) tenemos: Dgitos2 = { 0, 1 } Y las representaciones de los nmeros seran del estilo (11011). Para el sistema base 16 (hexadecimal) tenemos: Dgitos16 = { 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F } Con representaciones del estilo (1B).

Captulo 2.

Por comodidad, se adopta la convencin de escribir las representaciones con un subndice que indica la base. Los ejemplos seran: (11011)2 y (1B)16. Necesitamos ahora definir a qu nmero corresponde cada una de estas secuencias; necesitamos un mtodo para interpretarlas: si estamos trabajando en la base b, sabemos que cada elemento de un agrupamiento vale por b elementos del agrupamiento inmediatamente inferior; de esto se deduce que si multiplicamos el dgito en cuestin por b, podemos saber a cuntos elementos del agrupamiento inmediatamente inferior corresponde. Al resultado le podemos aplicar el mismo proceso hasta llegar a las unidades. Matemticamente podemos expresar lo anterior por medio de una funcin, que llamaremos Enterob, que toma una representacin y retorna su valor: Enterob (dn d0) = dn*bn + + d0*b0 =

d
i =0

bi

Dicho en otras palabras: los nmeros en los sistemas de numeracin posicional son representados por polinomios en b donde los coeficientes son los di. Por ejemplo, vamos a interpretar (11011)2: b=2 Entero2 (11011) = 1*24 + 1*23 + 0*22 + 1*21 + 1*20 En total, esto da: Entero2(11011) = 16 + 8 + 0 + 2 + 1 = 27. Tenemos entonces que (11011)2 representa al nmero 27. Ahora tomemos el (1B)16: b = 16 Recordemos, adems, que "B" es slo un smbolo que representa el dgito 11. Entero16 (1B) = 1*161 + 11*160 En total esto da: Entero16(1B) = 1*16 + 11 = 27. Lo cual quiere decir que (1B)16 tambin representa el nmero 27. Cambio de base

2.2

Formalizacin

19

La definicin de la seccin anterior es, adems, un algoritmo para pasar de cualquier base a la base 10: si se tiene un nmero en una base diferente de 10, basta con convertir cada dgito a la base 10 y despus calcular el polinomio. Los ejemplos de la seccin anterior ilustran este mtodo: convertimos (11011)2 y (1B)16 a decimal. Queda el problema de cmo pasar de la base 10 a otras bases. Es decir, tenemos un nmero N y queremos encontrar (dn d0) b. Por definicin: N = Enterob (dn d0) =

d
i =0

bi

Si dividimos el nmero N por b, obtenemos:


n di bi n N bi d = = i b b i =0 b i =1 n d0 d0 i 1 + = b di b + b i =1

Note que, en la ltima ecuacin, la sumatoria es un nmero entero (por qu?) mientras que la fraccin (d0/b) necesariamente es menor que 1 (por qu?); lo cual quiere decir que la sumatoria es el cociente de la divisin N/b, y que d0/b es la parte fraccionaria, o sea que d0 es el residuo de la divisin. En conclusin: si tenemos un nmero N y lo dividimos por b, el residuo de la divisin corresponde al dgito menos significativo del nmero cuando se representa en la base b. Si ahora tomamos el cociente obtenido, y lo dividimos por b, vamos a obtener:
n n d i b i 1 n d b i 1 d1 1 n i 1 d i b i 2 + 1 * di b = + = = di b b b i =2 b b i =1 i =1 i =2

El residuo es d1; es decir, el siguiente dgito de la representacin de N en base b. Podemos continuar aplicando este mtodo para obtener los otros dgitos, como usted puede verificar. A partir de lo anterior podemos desarrollar un mtodo para convertir de la base 10 a otras bases: al dividir un nmero por el valor de la base a la cual se quiere pasar (b), el residuo nos indica cul es el primer dgito del nmero en la base b; se contina realizando el mismo proceso con el cociente de la divisin, obteniendo el segundo dgito, el tercero y as sucesivamente. Veamos un ejemplo, pasar el nmero 27 a la base 4: [ 27 / 4 ] = 6, con un residuo de 3 [ 6 / 4] = 1, con un residuo de 2 Se contina haciendo las divisiones hasta que el resultado de la divisin sea menor que la base; en el ejemplo anterior, ocurre en la segunda divisin (el cociente es 1). El nmero buscado est compuesto por el cociente de la ltima divisin y los residuos de las otras divisiones; en nuestro ejemplo, esto es 123. Entonces: Entero4(123) = 27.

20

Numeracin posicional

Captulo 2.

Hay que tener cuidado cuando se trabaja con bases superiores a 10, recuerde que en este caso los dgitos pueden ser mayores que 10. A manera de ejemplo, pasemos 1627 a la base 16: 1627 16 11 101 16 5 6 El resultado es (6,5,11), es decir (65B)16. Matemticamente podemos sintetizar lo anterior de la siguiente manera: si un polinomio Pn(x) de grado n se divide por x, se obtiene un polinomio de grado n-1, y 0 el residuo de la divisin es el coeficiente d0 que multiplica a x . Las fracciones El sistema anterior se puede extender a las fracciones. Al trabajar en una base b, cada elemento de un cierto agrupamiento vale por b elementos del agrupamiento inmediatamente inferior. Por tanto, el agrupamiento inferior a la unidad debe ser 1/b (es decir, b-1), el siguiente ser 1/b2 (es decir, b-2) y as sucesivamente. En consecuencia, la interpretacin de una fraccin en base b viene dada por: Fraccinb (d-1 d-k) = d-1*b-1 + + d-k*bk =
k

i = 1

bi

Para indicar que una secuencia es de dgitos es una fraccin, le ponemos un punto al principio, por ejemplo: (.121)3. Para pasar una fraccin de una base cualquiera a la base 10, lo mismo que en el caso anterior, basta con calcular la sumatoria. Veamos esto con la fraccin (.121)3: Fraccin3 (.121) = 1*3-1 + 2*3-2 + 1*3-3 = 0. 3 + 0. 2 + 0.037 = 0.592 Donde la lnea sobre el nmero indica que la fraccin se repite al infinito.2 En el caso contrario, pasar de la base 10 a otra base, el mtodo es parecido al de los enteros, pero hay que multiplicar en lugar de dividir. Vemoslo en detalle: tenemos una fraccin f en la base 10 y queremos encontrar los di, en la base b, tales que: f =
i = 1

bi

Multiplicando por b, obtenemos: f*b = k i d b b = d i b i +1 + d 1 i i = 1 i = 2


k

En la ltima ecuacin, observamos que la sumatoria es la parte fraccionaria, y d-1 es la parte entera. Esto es suficiente: basta con hacer multiplicaciones sucesivas por la base a la cual queremos pasar; cada vez tomamos la parte entera, que ser un
2

Note que una fraccin finita en una base puede dar una fraccin infinita en otra base.

2.2

Formalizacin

21

nuevo dgito de la expansin fraccionaria en la base b, y continuamos el proceso con la parte fraccionaria hasta que esta sea 0. Por ejemplo, pasemos 0.890625 a la base 4: 0.890625 * 4 = 3.5625, parte entera 3 0.5625 * 4 = 2.25, parte entera 2 0.25 * 4 = 1.0, parte entera 1 En total tenemos (.321)4, o, dicho de otra forma: Fraccin4(.321) = 0.890625 Puede ocurrir que la parte fraccionaria del resultado de la multiplicacin nunca llegue a ser 0; en tal caso se trata de una expansin infinita. En este caso es necesario fijar una precisin y calcular dgitos hasta llegar a la precisin deseada. Tambin se puede parar en cuanto se identifique el periodo. Cuando se obtenga una fraccin que ya haya aparecido, se habr identificado el periodo; efectivamente, este estar constituido por todos los dgitos que se hayan calculado desde la primera vez que se multiplic la fraccin repetida hasta su segunda aparicin. Como ejemplo pasemos 0.1 3 a la base 3:
0 .1 3 * 3 = 0.4 * 3 0.2 * 3 0.6 * 3 0.8 * 3 0.3 9 = 0.4 (Por qu?), = 1.2 , parte entera = 0.6 , parte entera = 1.8 , parte entera = 2.4 , parte entera

parte entera 0 1 0 1 2

Llegamos a la fraccin 0.4, que ya se haba presentado, y concluimos que el periodo es 1012; luego el nmero en base 3 se escribe: ( 0.01012 )3. El comienzo de la fraccin puede no pertenecer al periodo en el ejemplo es el primer cero. 2.3 CAMBIO DE BASE: MTODOS RPIDOS

En las secciones anteriores hemos visto mtodos para pasar de una base a otra. Estos mtodos son seguros, pero pueden ser incmodos si la conversin se hace manualmente. En este caso hay formas ms prcticas de realizar dicha conversin. El primer sistema que vamos a estudiar es til, sobre todo, como algoritmo de cambio de base para implementar en computador. El mtodo est basado en la factorizacin de la sumatoria que define el valor de una representacin, es decir: Enterob (dn d0) = dn*bn + dn-1*bn-1 + + d1*b + d0 = ((dn*b + dn-1)* b + + d1)* b + d0 Como puede notar, slo se hacen n multiplicaciones; en el otro caso hay que hacer n*(n+1)/2 multiplicaciones. Por ejemplo, para saber el valor de (B1A)16: Entero16 (B1A) = (11*16 + 1)*16 + 10 = 2842 Veamos otro sistema para pasar nmeros pequeos de binario a decimal. Se escriben, de derecha a izquierda, las potencias de dos. Despus se escribe el nmero debajo y se suman las potencias que quedan encima de los unos:

22

Numeracin posicional

Captulo 2.

16
1 0

8 4 2 1
0 1 1 0 luego, Entero2(10110) = 22 1 0 1 1 luego, Entero2(1011) = 11

El mtodo que presentamos a continuacin se utiliza nicamente cuando las bases implicadas son dos y una potencia de dos. Supongamos que tenemos que pasar de la base 2 a la base 2k. Procedemos as: se parte el nmero en la base 2, de derecha a izquierda, en grupos de k dgitos. En seguida, cada uno de estos grupos se interpreta como un dgito en la base 2k. Por ejemplo, para pasar el nmero (1100101101011)2 a la base 8: 8 = 23, por lo tanto, tenemos que dividir en grupos de 3: 1 100 101 101 011 tomamos cada grupo como un dgito base 8: 1 4 5 5 3 en conclusin, el nmero base 8 es: (14553)8 El mismo nmero base 16 sera: 16 = 24, hay que dividir en grupos de 4: 1 1001 0110 1011 tomamos cada grupo como un dgito base 16 1 9 6 11 el 11, como dgito, se escribe B, luego: (196B)16 Este mtodo tambin se puede utilizar para pasar de la base 2k a binario: cada digito se escribe como k dgitos binarios (si el dgito se puede escribir usando menos de k dgitos binarios, se completa con ceros a la izquierda); luego se escribe todo junto. Ejemplos: leer, de abajo hacia arriba, los dos ejemplos anteriores. Es importante dominar el ltimo mtodo, ya que, aunque los computadores son binarios, se suele trabajar en base 16 8; as se evita escribir largas secuencias de 1 y 0 (los nmeros hexadecimales son ms compactos). En lugar de hablar de (01011100)2, hablamos de (5CH)16. Debe tener muy en cuenta que el sistema hexadecimal es slo una forma compacta de escribir los nmeros; los valores en el computador siempre son binarios.

2.4

Operaciones aritmticas en otras bases

23

2.4

OPERACIONES ARITMTICAS EN OTRAS BASES

Estamos habituados a efectuar operaciones aritmticas solo en base diez. En esta seccin vamos a generalizar los algoritmos aritmticos a otras bases. Precisemos: no nos interesa definir la operacin matemtica de la suma, sino definir un algoritmo para, a partir de dos nmeros representados usando numeracin posicional, calcular cmo debe ser el resultado de su suma en el mismo sistema. Vamos a operar sobre las representaciones de nmeros. Formalmente: x, y, z Representacinb Algoritmo+b (x, y) = z Enterob (x) + Enterob (y) = Enterob (z) El algoritmo de suma en la base b (Algoritmo+b) opera sobre representaciones. La suma Vamos a empezar por la suma. Tenemos dos nmeros X y Y tales que: Enterob(xn x0) = X Enterob(yn y0) = Y X y Y tienen la misma cantidad de dgitos.3 Ya que sus representaciones son polinomios, en principio, debemos hacer la suma de dos polinomios: X+Y=

xi b i + y i b i = ( xi + y i ) b i
i =0 i =0 i =0

Sin embargo, de lo anterior se deducira que los trminos (xi+yi) son los dgitos que componen el resultado, pero esto no necesariamente es as, puesto que xi+yi puede ser mayor o igual a b, y, en consecuencia, no sera un dgito vlido. Esta dificultad se puede salvar de la siguiente manera: si (xi+yi) b, necesariamente debe ser de la forma: (xi+yi) = k*b + r, donde k es el cociente de la divisin (xi+yi)/b y r es el residuo de la misma. Esto nos da las bases para el algoritmo de suma:

Se suman los dos polinomios (es decir, las parejas de dgitos de los dos nmeros que se encuentran en la misma posicin). Se recorren de derecha a izquierda (de menos significativo a ms significativo) los (xi+yi):

Si (xi+yi) < b, se deja as (es un dgito vlido). Si (xi+yi) b, se convierte en k*b + r. En el resultado, el dgito en la posicin i ser r, y k ser el acarreo al siguiente dgito; es decir, el dgito i+1 se convierte en (xi+1+yi+1+k).

3 Si este no fuera el caso, podramos agregar ceros a la izquierda al ms pequeo hasta darles la misma longitud.

24

Numeracin posicional

Captulo 2.

La ltima accin se justifica porque el i-simo dgito del nmero corresponde con el trmino (xi+yi)*bi del polinomio; si (xi+yi) b, efectuamos el reemplazo: (xi+yi)*bi = (k*b+r)*bi = k*bi+1 +r*bi Como r queda multiplicado por bi, esto quiere decir que es el i-simo dgito, y como k queda multiplicado por bi+1, esto quiere decir que hace parte del dgito i+1. Hemos puesto un nmero encima del otro y sumado los dgitos por columnas. El mdulo b de cada suma es el dgito de la columna, y el cociente de la divisin se suma a la columna siguiente. Expresado por medio de ecuaciones, esto es: c0 = 0 di = (xi + yi + ci) MOD b, ci+1 = [ (xi + yi + ci) / b ], Veamos un ejemplo en hexadecimal: 8B3 95A + 120D

0 i n+1 0in

Donde ci es el acarreo al siguiente, y los di son los dgitos que representan la suma.

En la primera columna, tenemos los dgitos A y 3, A vale 10, luego tenemos 10+3 = 13; 13<16, luego queda igual (pero se escribe D en hexadecimal). En la segunda columna, tenemos los dgitos 5 y B, el dgito B vale 11, luego tenemos 11+ 5 = 16; no es menor que 16, luego dividimos por 16, y obtenemos residuo 0 y cociente 1; o sea que el resultado es cero con un acarreo de 1. Por ltimo, en la tercera columna, tenemos los dgitos 8 y 9, y el acarreo de 1, luego efectuamos la suma 8+9+1 = 18; como no es menor que 16, efectuamos la divisin por 16 y obtenemos residuo 2 y cociente 1.

La multiplicacin Empecemos por el caso de la multiplicacin de un nmero por un dgito. Sean: Enterob(xn x0) = X Enterob(y0) = Y En trminos de polinomios, la operacin es: Y * X = y 0 * xi b i = xi * y 0 b i
i =0 i =0 n n

La situacin es similar a la de la suma: si xi * y0 < b, es un dgito vlido y se deja as; si es mayor o igual, se convierte en: (xi*y0) = k*b + r, donde k es el cociente de la divisin (xi*y0)/b y r es el residuo de la misma. En consecuencia, las ecuaciones que definen los dgitos del resultado (los di) son: c0 = 0 di = (xi * y0 + ci) MOD b, 0 i n+1

2.4 ci+1 = [(xi * y0 + ci) / b],

Operaciones aritmticas en otras bases 0in

25

Es decir, multiplicamos cada dgito del nmero X por el dgito y0. El mdulo b de esta multiplicacin es uno de los dgitos del resultado; el cociente es lo que se lleva al siguiente. Un ejemplo en base 5 es: 2304 * 3 12422

Tenemos que 3*4 da 12, y este no es un dgito vlido en base 5, luego dividimos por 5 y obtenemos un residuo de 2 y un cociente de 2; as que el resultado es 2 y llevamos 2. En seguida, 3*0 + 2 = 2; es un dgito vlido en base 5, luego lo dejamos igual. El siguiente es 3*3, que da 9, como no es un dgito vlido, dividimos por 5, y obtenemos un cociente de 1 con un residuo de 4. Por ltimo, 3*2 + 1 da 7; dividimos por 5 y obtenemos 2 y llevamos 1.

Para multiplicar dos nmeros, se procede como en decimal: se multiplica uno de los nmeros por cada dgito del otro, corriendo una posicin a la izquierda despus de cada multiplicacin, y sumando los resultados al final. Por ejemplo, en base 4: 3202 * 231 3202 22212 13010 2132322 El caso binario es ms simple, ya que los dgitos son 1 0: 1101 * 101 1101 0000 1101 1000001 En trminos de polinomios, est ocurriendo lo siguiente: X*Y=
n n n

x
i =0

bi *

y
j =0

b j =

x
j =0 i =0

j b i * y j b

La ltima ecuacin nos dice que el nmero X se debe multiplicar por cada uno de los dgitos de Y, y los productos parciales se suman, pero como estn multiplicados por bj, esto explica el corrimiento a la izquierda de los productos parciales. La divisin El mtodo de la divisin es como en el caso decimal. Se separan dgitos del dividendo hasta que el divisor sea menor que los dgitos separados. Se mira cuntas veces cabe el divisor en el nmero separado. Se multiplica el divisor por esta

26

Numeracin posicional

Captulo 2.

cantidad y el resultado de la multiplicacin se le resta al nmero separados Se agrega el dgito siguiente del dividendo al resultado de la resta y se contina aplicando el mtodo. A continuacin puede ver un ejemplo base 3: 10221 12 -101 210 12 -12 001 -000 001 De nuevo, la divisin binaria es ms sencilla puesto que un nmero en otro cabe o no cabe, 1 0, no hay que analizar ms casos: 101010 11 -11 1110 100 -11 11 -11 00 -0 0 Como se puede ver, los algoritmos en otras bases, en el fondo, son iguales a los algoritmos en base 10. Solo que las divisiones y mdulos se hacen por la base en cuestin, la cual, evidentemente, cambia. 2.5 OPERACIONES LGICAS

Estrictamente hablando, no se trata aqu de operaciones lgicas sino de una extensin de estas operaciones para trabajar sobre nmeros binarios. La idea es la siguiente: vamos a interpretar los nmeros 1 y 0 como los valores de verdad "verdadero" y "falso", respectivamente; de esta manera podemos extender las operaciones lgicas (Y, O, O-excluyente, NO) a los nmeros binarios. Por ejemplo, veamos cmo queda la tabla de verdad de la operacin Y (&): x y x & y
1 1 0 0 1 0 1 0 1 0 0 0

Adems, podemos hacer una generalizacin de estas operaciones a dos nmeros binarios cualesquiera; para lo cual realizamos la operacin dgito a dgito. Por ejemplo: 10111011 & 11011100 10011000

2.4

Operaciones aritmticas en otras bases

27

Lo anteriormente es aplicable a cualquier operador lgico, pero, en la prctica, slo se suele utilizar la negacin y los tres operadores O, Y y O-excluyente. Ms adelante volveremos a encontrar estas operaciones. EJERCICIOS 1El sistema de numeracin de los egipcios no era posicional, pero s funcionaba por agrupacin. Se dispona de smbolos para representar las potencias de 10: la vara, el taln, la cuerda, la flor de loto, el dedo, etc. (ver la figura). Cada smbolo se replicaba entre 0 y 9 veces para representar los diferentes valores; por ejemplo, a continuacin encuentra la representacin del nmero 123. 1 10 100 1000 10.000 a- Represente los nmeros 23.561 y 16.643 en numeracin egipcia. b- Desarrolle un algoritmo para sumar en notacin egipcia; prubelo con los dos nmeros anteriores. 2Completar la siguiente tabla pasando de horas, minutos y segundos a segundos o viceversa: hh:mmss Segundos
(3:5412) (4:037) 8621 10825

3-

En el sistema imperial de unidades, una milla tiene 1760 yardas, una yarda tiene 3 pies y un pie 12 pulgadas. Completar la siguiente tabla pasando de unidades del sistema imperial a pulgadas o viceversa: mi,yd,ft,in
2, 134, 2, 11 3, 0, 1, 7 131555 190099

inches

4-

Complete la siguiente tabla, convirtiendo cada nmero a las otras bases. Use los mtodos que desee para cambiar de base. Base 7
(236)7 (321)4 (3B)16

16

5-

Justifique matemticamente el "mtodo rpido" para pasar de base 2 a base 2k. Se puede generalizar a b y bk?

28

Numeracin posicional 6-

Captulo 2.

Hacer las siguientes operaciones con horas, minutos y segundos: a- (4:3515)+(3:5135)+(2:4420). b- (3:5135)*2. c- (3:5135)/2.

7-

Haga las siguientes operaciones en unidades del sistema imperial: a- (4 millas, 550 yardas, 1 pies, 5 pulgadas) + (3 millas, 1209 yardas, 2 pies, 7 pulgadas). b- (3 millas, 1209 yardas, 2 pies, 7 pulgadas) * 2. c- (3 millas, 1208 yardas, 2 pies, 7 pulgadas) / 3.

8-

Multiplicacin por la base. a- Calcule en binario: (101100)2 * (1000)2. b- En general, se tiene el nmero (dn d1) b en base b y se multiplica por bk. Describa (en trminos de los di) cmo debe ser el resultado.

9-

Divisin por la base. a- Calcule en binario (divisin entera): (101011)2 /(1000)2. b- Calcule en binario: (101011)2 mdulo (1000)2. c- En general, se tiene el nmero (dn d1) b en base b y se divide por bk, k < n Describa (en trminos de los di) cmo deben ser el cociente y el residuo de esta divisin.

10- Es posible resolver los siguientes ejercicios mentalmente y en poco tiempo. a- Diga cuntos unos tiene la representacin binaria de: 2(a a = 43*b, a > 300 y b 10.
+ b),

donde

b- Al pasar el nmero 1898 a la base 33 El resultado es divisible por 10? Es primo? c- El nmero (7A9JG23K3)30 es primo? d- Se tiene un nmero racional, en alguna base, con fraccin infinita. Al cambiarlo de base La fraccin se puede volver finita? Si en la nueva base la fraccin es infinita, Puede no ser peridica? e- Se hizo la siguiente operacin: (11)B*(11)B =(121)B. Es posible determinar cul es la base B? 11Realice las siguientes sumas directamente en la base en cuestin. a- (101100)2 + (1101101)2. b- (1E9)16 + (382)16. c- (1101101)2 + (337)8 (dar el resultado en binario) 12- Se tiene el nmero (3B6)16.

Captulo 2.

Ejercicios

29

a- Calcule el polinomio correspondiente (3*162+11*16+6) en binario. Es decir, en el polinomio, reemplace cada nmero por su valor en binario y efecte los clculos en binario. Cul debe ser el resultado? b- Repita el ejercicio de la parte a- pero esta vez haciendo los clculos en base 3. Cul debe ser el resultado? c- Tome el nmero base 3 de la parte b-, y calcule su polinomio en binario. Cul debe ser el resultado? 13- Un maya est negociando con un espaol. El maya usa la base 20, y no le es fcil captar los nmeros en decimal; el espao usa la base 10 y se le dificulta entender los nmeros en base 20. a- El espaol da los precios en decimal, pero el sistema decimal no es "natural" para el maya; qu algoritmo usa para saber el valor del nmero? b- El maya, amablemente, da los precios en decimal. Dado que solo conoce los precios en la base 20 cmo hace para obtener el nmero decimal correspondiente? c- Si el maya diera los precios en base 20 Qu debera hacer el espaol para entender el nmero? Compare la respuesta con la de la parte a-. 14- Manejo de fracciones. a- Escriba la fraccin (.542)10 en base 2. b- Escriba la fraccin (. 3 )10 en base 3. c- Escriba la fraccin (.0101)2 en base 10. d- Repita la parte c- pero usando el mtodo de escribir el nmero binario debajo de las potencias de dos (en el texto lo vimos nicamente para enteros, extindalo al caso de las fracciones). e- Tiene la fraccin (.0 3 )4. Escrbala en base cuatro pero usando slo una posicin decimal y sin perder precisin. 15Para convertir una fraccin de una base a otra, se puede fijar una precisin y detener el proceso de conversin cuando se llegue a ella. Para determinar la precisin, se parte de la siguiente idea: si se tiene una fraccin con i dgitos fraccionarios en la base A, la precisin es (0.1) iA . Si se quiere pasar a la base B, j conservando la precisin, hay que buscar un j tal que: (0.1) iA = (0.1) B . Despeje j en trminos de i, A y B (el valor de j define cuntos dgitos hay que calcular en la base B). x O-negado y = NO ( x O y ) = x y Defina las operaciones Y, O, NO usando nicamente la operacin O-negado.

16- La operacin O-negado (NOR) se define por:

30

Numeracin posicional 17-

Captulo 2.

Vamos a notar el O-excluyente con el operador . Siendo x una variable de un bit, se definen las operaciones f , g y h como: f(x) = x 1 g(x) = x 0 h(x) = x x A qu funciones "estndar" equivalen f , g y h?

18- Siendo x, y y z variables de un bit: a- Es (x y) z = x (y z)? b- A qu es igual (x y) y? 19- Siendo x y y variables de un bit, se definen las operaciones f y g como: f(x, y) = (x + y) mdulo 2 g(x, y) = (x - y) mdulo 2 A qu funciones "estndar" equivalen f y g? 20- Se tiene un nmero binario de k dgitos. a- Se quiere que el i-simo dgito se convierta en 1 sin importar qu valor tena antes y sin modificar los dems dgitos. Cul operacin lgica se podra usar para lograrlo? b- Qu operacin lgica habra que efectuar para que el i-simo dgito se convierta en cero? 21- Se tiene un nmero binario de k dgitos, y se quiere obtener el mdulo 2n. Hgalo utilizando una operacin lgica. 22- Discuta esta afirmacin: algunos pretenden que la gran pirmide (pirmide de Keops) tiene un simbolismo oculto. Por ejemplo, su altura es de 150m y la distancia de la tierra al sol es de 150 millones de Km. Si esto es cierto, implicara que los egipcios conocan la numeracin posicional en base 10. Es posible generalizar los sistemas de numeracin posicional modificando algunas de las reglas usuales, tales como que los dgitos deben ser enteros o que deben ser positivos. En general, podemos considerar que un sistema de numeracin posicional est compuesto de dos sucesiones: una sucesin di de dgitos, y una sucesin base Bi. El valor del nmero representado es:

d
i =0

Bi . En los sistemas de

numeracin usuales, Bi = bi, y di { x | 0 x< b }; a continuacin exploraremos otras posibilidades. 23- Numeracin de Fibonacci. En este caso vamos a considerar que di { 0, 1 }, y Bi = fi, donde fi es la serie de Fibonacci empezando en f0 = 1, y f1 = 2; por ejemplo, los nmeros del 0 al 5 seran: 0, 1, 10, 100, 101, 1000. a- Desarrolle un algoritmo para codificar un nmero cualquiera en la numeracin de Fibonacci.

Captulo 2.

Ejercicios

31

b- Note que en esta notacin es posible expresar el mismo nmero de varias maneras, por ejemplo, 11 = 100. Por esto, vamos a definir una forma normal: un nmero en esta notacin no puede tener dos unos seguidos. Desarrolle un algoritmo para convertir un nmero cualquiera en notacin de Fibonacci a la forma normal. Use la definicin de los nmeros de Fibonacci: fn+2 = fn+1 + fn. 24- Base 3 simtrica. En este caso di { -1, 0, 1 }, y Bi = 3i; por ejemplo, los nmeros del 0 al 5 seran: 0, 1, 11 , 10, 11, 111 (el -1 se nota por 1 )

a- Desarrolle un algoritmo para codificar un nmero cualquiera en la base 3 simtrica. b- En la base 3 simtrica los nmeros negativos son connaturales a la notacin. Desarrolle un algoritmo para codificar un nmero negativo cualquiera en base 3 simtrica. c- Desarrolle un algoritmo para sumar dos nmeros en esta representacin.

S-ar putea să vă placă și