Translate

11 jul 2014

Sistema Binario

Sistema de numeración Binario:

El sistema de numeración binario es la base o raíz de toda la informática. Nuestros ordenadores trabajan solamente con ceros y unos, ausencia o no de información.

En el sistema binario la unidad mínima es el Bit: un 0 o un 1.
La siguiente unidad es el Nibble, que representa cuatro bits: desde 0000 hasta 1111
A continuación tenemos el Byte, compuesto por dos Nibbles: desde 00000000 hasta 11111111
Luego, las unidades se van incrementando de 1024 en 1024 del siguiente modo:
1024 Bytes son 1 Kilobyte, 1024 Kilobytes son 1 Megabyte, 1024 Megabytes son 1Gigabyte, 1024 Gigabytes son 1 Terabyte.

Pasar un número decimal a binario es sumamente sencillo, solo hay que saber cuáles son las potencias de 2, porque al igual que el sistema decimal trabaja con potencias de 10, el binario trabaja con el número dos.

Un ejemplo del sistema decimal, que trabaja con potencias de diez, es el siguiente:
565 = 5x100 + 6x10 + 5x1

Donde a cada suma se va reduciendo una potencia de diez (una potencia, recordad, es un número elevado a algo), para que se vea más claro el tema de las potencias, el número anterior es equivalente al siguiente:
565 = 5x10^2 + 6x10^1 + 5x10^0

Donde 10^2 es cien, 10^1 es diez, y 10^0 es uno.

Ahora bien, el sistema binario trabaja igual, pero con potencias de 2, es decir...

2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256

Recordad que las potencias siempre son números pares, y de tanto utilizarlas al final se terminan memorizando. No es nada complicado. Ahora bien, ¿cómo pasamos un número decimal a binario? Hay que restar por cada potencia de 2 desde la potencia más cercana a ese número y que sea menor que éste de forma descendiente hasta llegar a la potencia de 2^0, a 1. Por ejemplo, si tenemos el número decimal 78, ¿por qué potencia deberíamos empezar? ¿Por la 2^7 que es 128? 128 es mayor, pero la más cercana y menor a 78 es 2^6, es decir, 64. Entonces, empezamos a restar ese número por cada potencia, si la resta da resultado negativo, tenemos un bit a 0 y volvemos a restar el número decimal por la siguiente potencia. Si la resta da positiva tenemos un bit a 1 y el resultado lo seguimos restando. Vamos a la práctica:
78 - 64 = 14 (1) --->La resta da positiva, así que seguimos restando con el resultado, 14<---
14 - 32 = -18 (0) --->Descartamos este resultado y seguimos con el número 14<---
14 - 16 = -2 (0) --->Sucede lo mismo que en el caso anterior<---
14 - 8 = 6 (1) --->Da positiva, por lo que continuamos restando de forma descendente con el resultado<---
6 - 4 = 2 (1)
2 - 2 = 0(1)
0 - 1 = -1 (0)

Ahora, si cogemos esa ristra de bits que hemos obtenido, tendremos el siguiente resultado: 100 1110
Pero claro, eso son siete bits, ¿no sería lo ideal tener 1 byte completo? Pues sí, sería lo ideal, para el tema de las direcciones IPs que explicaré en un futuro, sí tendremos que restar obligatoriamente desde la potencia de 128 hasta la potencia de 1. Pero en este caso el resultado no variaría, observemos por qué:
78 - 128 = -50 (0)

Si añadimos ese bit a la tira que ya teníamos anteriormente, formaríamos el byte completo, que sería así:
0100 1110

Todo bien hasta aquí, es muy sencillo, solamente restar el número por las potencias de 2 y si da negativo un 0, si da positivo un 1. ¿Pero cómo comprobamos que ha ido todo bien, y ese byte es realmente el número 78? Pues sumando las potencias de 2 en el orden en que las hemos colocado. El primer 0 del byte (el que empieza por la izquierda <<<<), es 128, mientras que el último 0 (el de la derecha >>>>) es 1 (2^0), por tanto, solo quedaría sumar:

2^7 (128) + 2^6 (64) + 2^5 (32) + 2^4 (16) + 2^3 (8) + 2^2 (4) + 2^1 (2) + 2^0 (1)

Sin embargo, si sumamos todo eso tendremos 255, efectivamente, un byte con todos los bits a 1 (1111 1111), por tanto, solo sumamos los que tengan en su posición el bit a 1, en este caso, como el byte es así: 0100 1110, sumaríamos del primer nibble el segundo (2^6, es decir, 64), y del segundo nibble todos excepto el último, porque están a 1, de la siguiente forma:

2^6 (64) + 2^3 (8) + 2^2 (4) + 2^1 (2)

O más claro:

64 + 8 + 4 + 2 = 78

En un comienzo podrá resultar confuso, ¡pero no os preocupéis! Con las direcciones IP se verá todo mucho más claro (o no (?)). Si tenéis dudas, os aconsejo coger números decimales que os gusten y os pongáis a restarlos, números no superiores a 255, a ser posible, ni inferiores a 0 (esto creo que es obvio), y repetid todos los pasos que he ido definiendo. ¡Mucha suerte! =)

Y con esto, todo hasta ahora, un saludito ^^

No hay comentarios: