El sistema binario es por naturaleza el lenguaje que entienden las máquinas digitales (si es que éstas pueden entender algún lenguaje). Mencioné en entradas anteriores que en un circuito digital existen señales que pueden tener sólo dos estados: BAJO y ALTO. Una señal con esta característica puede verse como un bit de información en el sistema binario, dado que un bit puede tener solo uno de dos valores: 0 y 1; donde el 0 se puede asociar al estado BAJO de una señal y el 1 se puede asociar al estado ALTO. Una agrupación de varias señales digitales, cada una con sus propios estados Alto y Bajo, puede verse como un conjunto de bits, cada uno con sus propios estados 0 y 1. Es posible analizar el comportamiento de un circuito digital en términos de los cambios de estas señales y por ello se hace imprescindible el entendimiento del sistema binario.
El sistema binario es un sistema numérico en el que solo se usan los dígitos 0 y 1. Al igual que en el sistema decimal (al cual estamos habituados), es posible realizar las operaciones básicas de suma, resta, multiplicación y división. Ahora bien, los circuitos digitales entienden el sistema binario y nosotros estamos familiarizados con el sistema decimal, por lo tanto necesitamos métodos para pasar de un sistema al otro. Existen en la web una innumerable cantidad de sitios que explican los métodos de conversión y no pretendo hacer de este blog uno más, así que solo pondré un ejemplo y les dejo un enlace donde pueden encontrar una explicación detallada.
De decimal a binario
Hay dos formas de hacerlo, una es por restas sucesivas y la otra es por divisiones sucesivas. Veamos primero por restas sucesivas.
Lo primero que debe tenerse en mente son las potencias de dos: 1, 2, 4, 8, 16, 32, 64, 128, 256, etc. Si quiero pasar el número 138 (en base 10 o decimal) a binario entonces:
1. Tomo la primera potencia de dos menor que 138 y empiezo a restar.
138 – 128 = 10
El resultado de la resta es un número entero positivo, entonces anoto un 1
2. El resultado de la resta anterior fue 10, a este la resto la siguiente potencia de dos en orden descendente, en este caso 64
10 – 64 = -54
El resultado de la resta es un número entero negativo, entonces anoto un 0
3. Como el resultado anterior es negativo, la resta no es válida, entonces tomo el último resultado válido (10) y resto la siguiente potencia de dos en orden descendente, en este caso 32
10 – 32 = - 22
Otro resultado negativo, entonces anoto un 0
4. De nuevo el último resultado válido fue 10, entonces
10 – 16 = -6
Otro resultado negativo, anoto un 0
5. 10 – 8 = 2
Por fin una resta válida, anoto un 1.
6. 2 – 4 = -2
Anoto un 0.
7. 2 – 2 = 0
Anoto un 1.
8. 0 – 1 = -1
Anoto un 0.
En resumen, la secuencia de pasos sería:
Resta | Resultado | Bit |
138 – 128 = | 10 | 1 |
10 – 64 = | -54 | 0 |
10 – 32 = | -22 | 0 |
10 - 16 = | -6 | 0 |
10 - 8 = | 2 | 1 |
2 – 4 = | -2 | 0 |
2 – 2 = | 0 | 1 |
0 – 1 = | -1 | 0 |
Finalmente, el número binario se compone de los 1’s y 0’s anotados, siendo el primero el de la extrema izquierda (o Bit Más Significativo) y el último el de la extrema derecha (Bit Menos Significativo). Entonces 138 decimal equivale a 10001010 binario.
El otro método es por divisiones sucesivas, lo que se hace es dividir sucesivamente por dos de la siguiente manera
1. 138 / 2 = 69. Como la división da exacta, el residuo es 0
2. 69 / 2 = 34, la división no es exacta, el residuo es 1
3. 34 / 2 = 17, la división es exacta, el residuo es 0
4. 17 / 2 = 8, la división no es exacta, el residuo es 1
5. 8 / 2 = 4, la división es exacta, el residuo es 0
6. 4 / 2 = 2, la división es exacta, el residuo es 0
7. 2 / 2 = 1, la división es exacta, el residuo es 0
8. El cociente de la última división fue 1 y ya no se puede seguir dividiendo más. Para formar el número binario, se toma el último cociente y los residuos en orden inverso, con lo que el equivalente binario de 138 sería 10001010.
De binario a decimal
La conversión de un número binario a un número decimal es bastante simple, sólo se multiplica cada digito binario por una potencia de dos cuyo exponente está determinado por la posición del digito, siendo la de la extrema derecha la número 0 e incrementando en una unidad hacia la izquierda, y se suman todos los resultados obtenidos.
Potencia | 2^7 = 128 | 2^6=64 | 2^5=32 | 2^4=16 | 2^3=8 | 2^2=4 | 2^1=2 | 2^0=1 |
Posición | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Digito | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
1*128 + 0*64 + 0*32 + 0*16 + 1*8 + 0*4 + 1*2 + 0*1 = 128 + 8 + 2 = 138
Eso es todo por ahora, gracias por su tiempo y recuerden consultar los enlaces que les he dejado, cualquier inquietud, duda, comentarios quejas o reclamos, estaré atento a responderlas.
Les dejo algunos enlaces donde pueden consultar la aritmética binarial (suma, resta, multiplicación y división de los números binarios)