jueves, 7 de febrero de 2013

Conversion de numeros de diferente base a otra base diferente

Del libro de "Lógica Digital y Diseños de Computadores", de M. Morris Mano, Capitulo 1 "Sistemas Binarios"

1-6 Convierta los siguientes numeros en base a las bases que se indican

a) decimal 225.225 a binario, octal y hexadecimal

Este siendo el ejercicio mas sencillo, ya que es decimal a diferentes bases,

A binario:


225 / 2 = 112 , 1/2 , a0 = 1
112 / 2 = 56, 0/2, a1 = 0
28 / 2 = 14, 0/2, a2 = 0
14 / 2 = 7 , 0/2 , a3 = 0
7 / 2 = 3, 1/2, a4 = 1
3 / 2 = 1, 1/2, a5 = 1
1 / 2 = 0 , 1/2, a6 = 1

parte entera: (1110001)2

0.225 * 2 = 0.45, a-1 = 0
0.45 * 2 = 0.9, a-2 = 0
0.9 * 2 = 1.8, a-3 = 1
0.8 * 2 = 1.6, a-4 = 1
0.6 * 2 = 1.2, a-5 = 1
0.2 * 2 = 0.4, a-6 = 0
0.4 * 2 = 0.8, a-7 = 0 <---- En este punto se "cicla", no importa cuantas veces se multiplique por 2, nunca llegara a 0

resultado en binario: (1110001.0011100)2

Para convertir decimal a una diferente base se hace el mismo proceso que se hizo para convertirlo en binario, solo que se cambia la base, por ejemplo si en la parte entera dividimos entre 2, para octal dividiremos entre 8 y para hexadecimal entre 16, y en la parte con punto, se multiplica por la base

A octal

225  / 8 = 28.125, 0.125 = 1/8 , a0 = 1

28 / 8 = 3.5, 0.5 = 4/8, a1 = 4
3 / 8 = 0.375, 0.375 = 3/7, a2 = 3

parte entera = (341)
8
0.225 * 8 = 1.8 , a-1 = 1
0.8 * 8 =  6.4 , a-2 = 6
0.4 * 8 = 3.2, a-3 = 3
0.2 * 8= 1.6, a-4 = 1
0.6 * 8 = 4.8, a-5 = 4
0.8 *8 = 6.4, a-6 = 6 <----- Aquí se repite el resultado, se "ciclea"

Resultado final: (341.163146)8
225 / 16 = 14.0625 , 0.0625 = 1/16 , a0 = 1
14 / 16 = a1 = 14 = E <---- Recuerden que en Hexadecimal, la base es hasta 15, asi que en vez de poner 10,11,12,13,14, se usan las letras A,B,C,D,E respectivamente

parte entera: (E1)16

0.225 * 16 = 3.6 , a-1= 3
0.6 * 16 = 9.6, a-2 = 9
0.6 * 16 = 9.6 a-3 = 9 <---- Aqui se ciclea

resultado final: (E1.399)16

b) binario 11010111.110 a decimal, octal y hexadecimal

El binario es una de las bases mas importante referente  a computación  ya que es como "nos comunicamos" con la maquina, sin embargo el Octal y Hexadecimal, también son importante, no es casualidad  que estas sean las 4 bases que se enseñan en informática.


Binario a Decimal:

Este método se vio en la entrada anterior, así que el resultado es:

1*2⁷ + 1*2⁶ + 1*2⁴ + 1*2² + 1*2¹ + 1*2⁰ + 1*2⁻¹ + 1*2⁻² = 
128 + 64 + 16 + 4 + 2 + 1 + 0.5 + 0.25 = (215.75)10

Binario a Octal:

Aquí hay 2 formas de hacerlo, una puede ser convertirlo a Decimal, y de ahí convertirlo en binario, ya que tenemos el datos hagamoslo de esa forma primero, el valor en decimal es 215.75:

215 / 8 = 26.875, 0.875 = 7/8, a0 = 7
26 / 8 = 3.25 , 0.25 = 2/8, a1 = 2
3/8 = 0.375, 0.375 = 3/8 , a2 = 3

0.75 * 8 = 6.0, a
-1 = 6

Resultado final: (327.6)8

Sin embargo tambien existe otro metodo, citando a Morris Mano, pagina 9, capitulo 1-4 "La conversion binario a octal y hexadecimal y viceversa juega un papel muy importante en los computadores digitales. Como 2³ = 8 y 2⁴ = 16, cada digito octal corresponde a tres digitos binarios, y cada  digito hexadecimal corresponde a 4 digitos en binario."

Entonces para convertir de binario a decimal, tenemos que tomar el numero binario, y separarlo en secciones de 3 dígitos, por que 3, por que 2³ = 8, y 8 es la base octal

el numero es 11010111.110, al separarlo tenemos -011-010-111.-110-, entonces con nuestro conocimiento en binario, sabemos que

000 = 0,  100  = 4

001 = 1,   101 = 5
010 = 2,  110 = 6
011 = 3,  111 = 7

entonces, remplazando cada sección con el numero, tenemos -3-2-7.-6

que es lo mismo que obtuvimos cuando convertimos de decimal a octal, 
(327.6)8

Hexadecimal a binario:

Al igual, que el caso anterior, tenemos el dato en decimal, asi que podemos resolverlo rápidamente

215 / 16 = 13.4375, 04375 = 7/16 , a0 = 7
13 / 16 = 0.8125, 0.8125 = 13/16, a1 = 13 = D

0.75 * 16 = 12.0 , a
-1 = 12 = C

Resultado final: (D7.C)16


Pero también esta el otro método  sin en octal se divide en 3 cifras, para hexadecimal, son 4 cifras, ya que 2⁴ = 16 y la base de hexadecimal es 16

entonces el numero binario 
11010111.110, se convierte en -1101-0111-.-1100-

Recurrimos de nuevo a nuestros conocmiento en binario:


0000 = 0, 0101 = 5, 1010 = 10 = A , 1111 = 15 = F
0001 = 1, 0110 = 6, 1011 = 11 = B
0010 = 2, 0111 = 7, 1100 = 12 = C
0011 = 3, 1000 = 8,1101 = 13 = D
0100 = 4, 1001 = 9,1110 = 14 = E

Remplazando valores obtenemos: -D-7-.-C-, que es lo mismo que obtuvimos al sacarlo desde decimal: (D7.C)16

c) octal 623.77 a decimal, binario, y hexadecimal

d) el hexadecimal 2AC5.D a decimal, octal y binario

2 comentarios: