Pasaje entre distintos Sistemas numricos:

Sistema Decimal:

Supongo que todas las personas que leen esto estn demasiado familiarizadas con este Sistema...

Constitudo por diez elementos(base 10).
Elementos: 0,1,2,3,4,5,6,7,8 y 9.

Ejemplos:	.1
		.40
		.100
		.255

Sistema Binario:

Constitudo por dos elementos(base 2).
Elementos: 0 y 1.

Un bit es un slo elemento: Un bit puede valer 0(cero) o 1(uno).
Un byte son 8 bits, es decir, 8 elementos.

Ejemplos de bytes: 	b'00000001'
			b'10100010'
			b'11110000'
			b'00101100'



Sistema Hexadecimal:

Constitudo por 16 elementos.Los primeros diez coincden con nuestro Sitema Decimal
y luego se le agregan seis letras para los elementos restantes(base 16).
Elementos: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E y F

Ejemplos:	0x01
		0x0A
		0xFB
		0xD5


Tabla de equivalencias entre los elementos del Sistema Decimal,Sistema Binario y Sistema Hexadecimal:

Sistema:	Hexadecimal	Decimal		Binario
			
		0		0		0
		1		1		1
		2		2		10
		3		3		11
		4		4		100
		5		5		101
		6		6		110
		7		7		111
		8		8		1000
		9		9		1001
		A		10		1010
		B		11		1011
		C		12		1100
		D		13		1101
		E		14		1110
		F		15		1111


NOTA: Agregar ceros a la izquierda al valor en cualquiera de estos tres sistemas, NO LO AFECTA.


Pasaje entre sistemas:

1) Pasaje de Sistema decimal a Sistema binario:

Se realiza dividiendo por 2 al nmero decimal sucesivas veces. El valor correspondiente en Sistema Binario se obtiene
uniendo el resultado de la ultima divisin seguido de los RESTOS de la divisiones anteriores.

Ejemplo:	.45  <-- esto es 45 en Sistema Decimal

Pasaje:		45/2 = 22 RESTO: 1
		22/2 = 11 RESTO: 0
		11/2 = 5  RESTO: 1
		5/2 = 2   RESTO: 1
		2/2 = 1   RESTO: 1

Como el dividendo(1) es menor al divisor(2), no dividmos ms.

Ahora, para obtener el valor binario.Como ya he dicho, unmos el ltimo resultado de la divisin segudo de los restos de las divisiones anteriores.
Comenzando por el resultado de la ltima divisin obtenemos: 1 (notese: 2/2 = 1)

Ahora, colocamos el RESTO de la ltima divisin DETRAS.Nos queda: 11
Seguido a esto, colocamos todos los RESTOS restantes DETRAS.
Siguendo esta logica, obtenemos: 111101
Entonces el valor binario correspondiente es: 111101
He all el binario buscado.

NOTA: El valor obtenido posee un largo de 6. Un Byte contiene 8 bits. Por lo tanto, para pasar este valor a un byte
debemos anteponer tantos ceros como sea necesario para completar el largo de 8.
Por lo tanto: 111101
Lo pasamos a: 00111101
En asm, el valor se declarara as: b'00111101'

Al igual que en el Sistema Decimal, agregar ceros a la izquierda no afecta al valor.

2) Pasaje de Sistema Binario a Sistema Decimal:

Se realza elevando a todos los bits del valor binario a una potncia correspondiente a su ubicacion(jerarqua) dentro del byte.

2.a) Primeras aproximacines:

Ejemplo:  Tenemos el valor: b'10110101' <-- esto es 10110101 en Sistema Binario.

Por lo tanto: El valor en Sistema Decimal se obtiene haciendo, primero:

		1	0	1	1	0	1	0	1
		
		2^7	2^6	2^5	2^4	2^3	2^2	2^1	2^0						

		
	
NOTA: Al simbolo ^ lo he utilizado como smbolo de potncia.

Ahora, multiplicaremos el valor cada bit por funcin correspondiente:

		1	0	1	1	0	1	0	1
		
		1*2^7	0*2^6	1*2^5	1*2^4	0*2^3	1*2^2	0*2^1	1*2^0

Resolviendo obtenemos:

		
		1*2^7=128	0*2^6=0		1*2^5=32	1*2^4=16	0*2^3=0		1*2^2=4		0*2^1=0		1x2^0=1

Por ltimo sumamos los resultados obtenidos y calculamos el resultado:

128+0+32+16+0+4+0+1=181

POr lo tanto b'10110101' en Sistema Binario es igual a .181 en Sistema Decimal.

2.b) Agilizando la conversin:

Agilizando el ejemplo anterior, muchos se habrn dado cuenta, que todos los bits que valen 0(cero) son neutrales.
Para agilizr, vuelvo a plantear la conversin, eliminando los bits que valgan cero.De esta forma, acelerando la conversin queda:

		1	0	1	1	0	1	0	1
		
		2^7		2^5	2^4		2^2		2^0
		 
		128		32	16		4		1

128+32+16+4+1=181

He alli el valor buscado.Hemos agilizando el mtodo anterior.

3) Pasaje de Sistema Decimal a Sistema Hexadecimal:

Lgicamente, he dicho anteriormente, que el Sistema Hexadecimal consta de 16 elementos.
Siguiendo la misma lgica que la conversin de Sistema Decimal a Sistema Binario, podemos deducir
que el mtodo a utilizar en este caso ser similar, pero esta vez, dividiremos el valor en Sistema Decimal por 16.

Ejemplo:	.215  <-- esto es 215 en Sistema Decimal

Pasaje:		215/16 = 13 RESTO: 7

Como el dividendo(13) es menor al divisor(16), no dividimos mas.

Obtuvimos dos valores: 13 como resultado ENTERO de la division, y 7 como el resto de la misma.

Primero: Convertiremos los valores obtenidos al Sistema Hexadecimal.

Volviendo a la tabla de equivalencias entre los elementos del Sistema Hexadecimal y el Sistema Decimal, sabemos
que 13 en Sistema Decimal, corresponde al valor D en el Sistema Hexadecimal.
Mientras que 7 en el Sistema Decimal corresponde a 7 en el Sistema Hexadecimal.

Por lo tanto, nuevamente aplicando la msma lgica que la utilizada en la conversin
de Sistema Decimal a sistema Binario, colocaremos primero el resultado de la divisin,
es decir, primero el valor D, seguido del resto de la division, en este caso el resto es igual a 7.
Entonces, nos quedaria: D7
En asm este valor se escribiria asi: 0xD7

4) Pasaje de Sistema Hexadecimal a Sistema Decimal


Basandonos nuevamente en el pasaje de Sistema Binario a Sistema Decimal, muchos podrn deducr cmo se realizara el pasaje:


4.a) Primeras aproximaciones:

Ejemplo:  Tenemos el valor: 0xA0 <-- esto es A0 en Sistema Hexadecimal.

Por lo tanto: El valor en Sistema Decimal se obtiene haciendo primero:
	
		A	0
		
		16^1	16^0
		
	
NOTA: Al simbolo ^  lo he utilizado como simbolo de potencia.

Ahora, multiplicaremos cada elemento por funcion correspondiente:

		A		0
		
		A*16^1		0*16^0
	
Ahora, pasamos los elementos del Sistema Hexadecimal al Sistema Decimal.
Sabemos, remontandonos a la tabla de equivalencias, que A = 10 en Sistema Decimal y que 0 = 0 en Sistema Decimal.

Por lo tanto, reemplazando, obtenemos:


		A		0
		
		10*16^1		0*16^0

Resolviendo, obtenemos:

		10*16^1=160		0*16^0=0
		
Por ltimo sumamos los resultados obtenidos y calculamos el resultado:

160+0=160

POr lo tanto 0xA0 en Sistema Hexadecimal es igual a .160 en Sistema Decimal.

4.b) Agilizando la conversion:

Agilizando el ejemplo anterior, muchos se habran dado cuenta, que todos los elementos que valen 0(cero) son neutrales.
Para agilizar, vuelvo a plantear la conversin, eliminando los elementos que valgan cero.De esta forma,acelerando la conversin, queda:

		A	0

		16^1	

		160


Por lo tanto, el valor obtenido es 160.

5) Pasaje de Sistema Binario a Sistema Hexadecimal:

Un byte est compuesto de dos nibbles. Un nibble es un conjunto de 4 bits.Por lo tanto, un byte constar de dos nibbles, un nibble bajo y un nibble alto.

Ejemplo:	b'10011110' <-- esto es 10011110 en Sistema Binario

		1001		1110
	    nibble alto	     nibble bajo

5.a) Utilizando la tabla de equivalencias:

Remontandonos a la tabla de equivalencia entre los sistemas, obtenemos que:

		1001 = 9 en Sistema Hexadecimal
		1110 = E en Sistema Hexadecimal

Respetando la jerarqua, unimos los valores obtenidos quedando : 9E
En asm, este valor se escribiria asi: 0x9E

5.b) Pasando primero los nibbles al Sistema Decimal, y luego al Sistema Hexadecimal

Tomamos nuevamente nuestros dos nibbles:

		1001		1110
	    nibble alto	     nibble bajo

Y aplicamos, POR SEPARADO PARA CADA NIBBLE, la lgica utilizada en el punto 2.b)

Aplicandola:

		1	0	0	1		

		2^3			2^0

		8			1


Entonces: 8+1 = 9

		1	1	1	0

		2^3	2^2	2^1

		8	4	2
		
Entonces: 8+4+2= 14

Una vez hecho esto, slo queda pasar los valores en Sistema Decimal, al Sistema Hexadecimal.
Viendo la tabla de equivalencias, podemos observar que: 9 en Sistema Decimal = 9 en Sistema Hexadecimal;
Y que 14 en Sistema Decimal = E en Sistema Hexadecimal.
Ahora, agrupamos ambos valores, respetando siempre la jerarqua y nos queda: 9E

En asm el valor se escribe asi:	0x9E


5.c) Pasando el byte completo al Sistema Decimal, y luego al Sistema Hexadecimal

Obviamente es posible primero pasar el valor binario a decimal, y luego el decimal resultante a hexadecimal, aunque obviamente
esto nos llevar mas tiempo.

6) Pasaje de Sistema Hexadecimal a Sistema Binario:

6.a) Utilizando la tabla de equivalencias

Ejemplo:	0xF7 <-- esto es F7 en Sistema Hexadecimal

Primero separaremos los elementos del valor Hexadecimal:

Tenemos, por un lado el valor F, y por otro lado el valor 7.
Nos queda:	F	7

Revisando la tabla, sabemos que F = 1111 en Sistema Binario, y que 7 = 111 en Sistema Binario.

NOTA:

Fijemonos que el valor binario obtenido en el segundo caso es igual a 111. Su longitud es de 3 bits.
Es fcil darse cuenta que hemos obtenido los dos nibbles que,juntos, componen un byte.
Pero como se ha dicho, un nibble est compuesto por 4 bits.
Por lo tanto, rellenaremos el valor con tantos ceros a la izquierda como sean necesario.
En este caso, slo necesitaremos anteponer un solo cero al valor para que su longitud sea cuatro.
Por lo tanto: 111 lo convertimos en: 0111.

Una vez hecho esto, unimos los valores convertidos, siempre respetando la jerarqua original, nos queda: 11110111

En asm este valor se escribiria asi: b'11110111'

6.b) Pasando los valores por separado: primero al Sistema Decimal, y luego al Sistema Binario

Ejemplo:	0xB6	<-- esto es 16 en Sistema Hexadecimal

Primero separaremos los elementos del valor Hexadecimal quedandonos:

		B	6

Ahora, aplicaremos la tabla para convertir los valores al Sistema Decimal.
B = 11 en el Sistema Decimal, mientras que 6 = 6 en el Sistema Decimal.
Una vez hecho esto. Procedemos a realizar las divisiones por separado aplicando lo aprendido en el puno 1):

Tenemos primero entonces: 	11/2 = 5 RESTO: 1
			  	5/2 = 2  RESTO: 1
				2/2 = 1  RESTO: 0

Como el dividendo(1) es menor al divisor(2), no dividimos mas.

Aplicando el mtodo aprendido en el punto 1) nos queda: 1011

Hacemos lo mismo con el otro valor:
				6/2 = 3 RESTO: 0
				3/2 = 1 RESTO: 1

Como el dividendo(1) es menor al divisor(2), no dividimos mas.

Aplicando nuevamente el mtodo aprendido en el punto 1) nos queda: 110

Recordemos la NOTA sealada en el punto 6.a)
Si la longitud del valor obtenido es menor a 4, debemos rellenar con ceros a la izquierda el valor, hasta completar el nibble,
Es decir: hasta que el valor contenga 4 bits.
Entonces al 110 obtenido: lo convertimos en 0110.
Ahora si, una vez completados los nibbles, los unimos respetando la jerarqua, quedandonos finalmente: 10110110

En asm este valor se escribira asi: b'10110110'

6.c) Pasando el valor completo: Primero al Sistema Decimal, y luego al Sistema Binario

Obviamente es posible primero pasar el valor hexadecimal a decimal, y luego el decimal resultante a binario, aunque obviamente
esto nos llevar mas tiempo.

	
Espero que les haya resultado de utilidad.
Gracias por haberse tomado el trabajo de leerlo. BrunoF. - bipus24hs@hotmail.com - 2006.



