Viaje astral por la numeración binaria

Aloha rumberos! Cuando enviamos datos, cuando trabajamos en Arduino o programación siempre nos encontramos con bits. Los bits son o un 1 o un 0 que se resume en: existe una tensión (ON) o no existe (OFF). Esto es lo que entienden las máquinas.
Pero para poder hacerlo comprensible y entendible para la gente de a pie que no va contando por ahí con unos y ceros, la gente que sabe de esto ha tenido que crear nuevos sistemas de numeración que permitan traducir el chorro de unos y ceros a números entendibles, vamos los que usamos en nuestro día a día para contar lo que nos cuesta el pan.
Así que, listo para el zapateao de números? Empecemos antes de que se te vayan las ganas cuando menos lo espere…
Pasando de binario a decimal
Los unos y ceros son lo que se llaman bits y eso es lo que lee tu ordenador (Creo que he escrito unos y ceros por encima de mis posibilidades en las últimas 140 palabras). Esa lectura para nosotros no sirve de nada así que lo que hemos hecho es adaptar estos números de manera que los podamos entender en decimal (El sistema que utilizamos en nuestro día a día).
Esto se hace mediante pesos. Cada bit vale 2 elevado a su posición. Empezando a contar la posición desde el número 0. Es decir, si tengo un 1 en la primera posición es 2⁰=1 en decimal. Si el 1 está en la segunda posición (que es posición 1 por empezar a contar desde 0) el resultado en decimal es 2¹=2.
La posición que marca el bit le da un peso. Luego, si nos enfrentamos ante varios bits solamente hay que aplicar esos pesos multiplicados por el 1 o el 0 (Multiplicar por 0 es 0, pero para los novatos puede resultarles útil…) y sumarlo.
Vayamos a la práctica que me enredo…
1010
Se tratará del número en decimal:
Si esta operación te resulta compleja solo tienes que pensar que la primera posición multiplica por 1, la segunda por 2, la tercera por 4 y la cuarta por 8. Es decir, simplemente hay que multiplicar por 2 cada vez para saber lo que vale en esa posición un bit a 1.
Y, ¿Sabes qué? Que te presento a mi amigo el byte. Tal vez lo recuerdes de escenas como “Aquí esperando en la cola de la tienda de electrónica” o de “Me he puesto fibra para tener más Megabytes de esos”.
¿Y quién es el byte?
He aquí el individuo en sí, o al menos uno de ellos:
10011001
¿Cuál es la diferencia con el ejemplo anterior? El número de posiciones, 8 bits hacen un byte. En este caso se aplicaría la misma regla que antes, y obviando los ceros (¡Multiplícate por cero, Simpson!):
Si nos fijamos, podemos ver que un byte representa desde el número 00000000, que en decimal sería 0, hasta el 11111111, que en decimal sería 255.
Si te fijas, este número puede que te suene, seguramente de algún convertidor ADC de 8 bits, que es un byte como ya sabemos.
Aun así, a pesar de poder pasarlo a decimal, esta notación binaria es incordiosa por definición. ¿Quién arrastra 8 números para representar un valor de 0 a 255?
Es por eso que surgen dos sistemas de representación más: el octal y el hexadecimal. Y ambos han aparecido ya en este post por la tangente y a de puntillas para que no les diésemos demasiada bola…
Representando en octal, representando en hexadecimal
El sistema octal se llama así porque utiliza 8 dígitos, del 0 al 7. Es decir, todos los números se representan con estos 8 dígitos.
Si solo podemos contar de 0 a 7, estaremos ante el caso de que un dígito de base octal corresponde a 3 bits. Si quiero representar 010 pondré un 4, que es exactamente el mismo número que en decimal.
Ahora bien, visitemos el primer ejemplo en el que he utilizado el siguiente número:
1010
Que es lo mismo que 1 010. No hace daño a nadie ese espacio, pero nos deja traducir a decimal cada una de sus partes porque sin querer ha pasado a ser:
001 010
Que sería 12 en octal ya que los tres primeros bits son un 1 en octal (y en decimal) y los tres segundos bits son un 2. Pero recordemos siempre que esto es base octal, porque el número en decimal ya hemos dicho que se trataba del 10.

Información básica sobre Proteción de datos
Responsable ➥ Sergio Luján Cuenca
Finalidad ➥ Gestionar el envío de correos electrónicos con artículos, noticias y publicidad. Todo relacionado con los temas de rufianenlared.com
Legitimación ➥ Consentimiento del interesado
Destinatarios ➥ Estos datos se comunicarán a MailRelay para gestionar el envío de los correos electrónicos
Derechos ➥ Acceder, rectificar y suprimir los datos, así como otros derechos, como se explica en la política de privacidad
Plazo de conservación de los datos ➥ Hasta que se solicite la supresión por parte del interesado
Información adicional ➥ Puedes encontrarla en la política de privacidad y el aviso legal
Hexadecimal es representar tus números favoritos con letras
El sistema octal está bien, pero normalmente no se utiliza tanto como el hexadecimal. Supongo que porque aglutina más dígitos, exactamente 16. Es decir podemos representar del 0 al 15 con este sistema de dígitos…
Un momento… 15 son dos dígitos, 10 son dos dígitos… ¿Cómo hacer esto? Con letras. Es decir, la cuenta aquí es: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Si hacemos el truco de dividir en bits, el número 15 corresponde a 1111 que son 4 bits(Por lo que dividiremos los números en grupos de 4 bits para representarlos en hexadecimal de forma más sencilla). Por lo que, el primer ejemplo 1010 se representaría con A en sistema hexadecimal y con 10 en decimal.
Pero si queremos darle aún más vueltas, fijémonos en el segundo ejemplo que he puesto con los binarios:
10011001
Que si dividimos en grupos de 4 bits, quedaría como:
1001 1001
El primer cuarteto de bits sería un 9 en hexadecimal (Y en decimal, por no ser mayor o igual a 10). El segundo cuarteto de bits también es un 9 en hexadecimal, por lo que el número 10011001 en binario, que es 153 en decimal, es 99 en hexadecimal y si nos ponemos conciliadores, es 231 en octal.
Es decir, somos capaces de transmitir 1 byte en 2 dígitos hexadecimales. Esto nos permite enviar mensajes de manera más sencilla que enviando 8 bits. Y de manera más entendible, que no se nos olvide…
Y déjame que vaya preparando mi equipaje…
Si en algún caso te has sentido decepcionado porque no he utilizado una letra en el apartado anterior, pongo este ejemplo:
1101 1111
Que será DF en hexadecimal, 337 en octal y 223 en decimal. Si te ha parecido increíblemente rápido el cálculo que he hecho, estas en lo cierto, hago trampa.
En la calculadora de tu ordenador hay una opción que se suele llamar modo de programación o similar. Ahí te permite elegir la base en la que escribirás el número y lo transforma a el resto de bases. Recordemos las bases: binaria, octal, decimal y hexadecimal.
Por otra parte, supongo que habrás adivinado por el camino que nuestro sistema se llama decimal por tener 10 dígitos (Del 0 al 9). Para distinguir en qué sistema estamos trabajando normalmente se pone un subíndice al final del número que hemos escrito.
Un subíndice 2 indicará el sistema binario, un 8 el sistema octal, un 10 el sistema decimal y un 16 que se está usando el sistema hexadecimal. Otra forma de indicar que se está haciendo uso del sistema hexadecimal es poner un ‘0x’ antes del número. En el ejemplo anterior sería 0xDF. Así queda claramente definido como un número y no parece que hablemos de un Distrito Federal.
Y poco más, nos mantenemos conectados en los comentarios, no nos dejamos de querer…
P.D. Este post debería haber salido el 10/11/2020, pero no pudo hacerlo porque me encontraba en el hospital despidiendo a la persona que me ha cuidado durante toda mi vida hasta el día 11/11/2020 a las 1:15am. Este post se lo dedico a ella, con su canción. ¡Cuídate y cuídame!
Déjame un comentario que en el fondo soy buen chaval
Muy biena lectura, excelente.