Paso 3: De Decimal a binario: derribando números en 1s y 0s
Decir que queremos encontrar la representación binaria del número decimal 23. En primer lugar notamos que 23 es una combinación del número 3 en los 10 ^ posición 0 y el número 2 en el 10 ^ 1 posición, lo que significa que cuando pesamos cada número según su posición (2 * 10 ^ 1 + 3 * 10 ^ 0) obtenemos el número 23. Si tratamos de hacer lo mismo en binario se acercaba con el número 10111 porque 1 * 2 ^ 4 + 0 * 2 ^ 3 + 1 * 2 ^ 2 + 1 * 2 ^ 1 + 1 * 2 ^ 0 = 23. Por supuesto, encontrar la representación binaria de un número relativamente pequeño como 23 se puede hacer sin mucho cálculo. Pero para números más grandes se hace necesario utilizar el siguiente algoritmo:
-Aumento de 2 ^ 0, encontrar la primera potencia de 2 más grande que el número decimal tenemos
-A partir de la potencia de 2 inmediatamente por debajo de la encontramos en el primer paso, dividir el número decimal por potencias de 2 en orden decreciente, hasta 2 ^ 0
-Después de cada paso de la división, debemos obtener un 1 o un 0 como el cociente y algún valor del resto. El resto debe ir eventualmente a 0 (esto puede ocurrir antes de la última etapa de la división)
-Los 1s y 0s obtenidos como los cocientes dan la representación binaria del número decimal
Bien, si no hemos pasado por el proceso antes, todo suena como un galimatías. Nada como ir a través de un ejemplo para aclarar las cosas. Decir que queremos encontrar la representación binaria del número decimal 117. Vamos a intentar seguir el algoritmo anterior (usaré algunos ajustes personales):
-Empezamos con 2 ^ 0 que es menor a 117, por lo que seguimos aumentando. 2 ^ 1 es también más pequeño, mantener... Muy bien así llegamos a 2 ^ 5 que es todavía más pequeño que 117, pero tan pronto como tenemos 2 ^ 6 que es la "primera potencia de 2 más grande que el número decimal que tenemos"
-Así que sabemos que tenemos que empezar con la potencia de 2 inmediatamente por debajo de 2 ^ 6, que es 2 ^ 5. [Ajustes personales] ya que sabemos que vamos a dividir por todas las potencias de 2 por debajo de 2 ^ 5, anotarlas todo antes para que no se olvide. También recuerdo a mí mismo que el resto de la División debe terminar en 0 (aunque podría convertirse en 0 en el camino.
Divisor de | Resto | Cociente de la
2 ^ 6 (64) | |
2 ^ 5 (32) | |
2 ^ 4 (16) | |
2^3 (8) | |
2^2 (4) | |
2^1 (2) | |
2^0 (1) | |
0
-Con todo lo establecido, comenzamos los pasos de la División:
Divisor de | Resto | Cociente de la
2 ^ 6 (64) | 117 | 1
2 ^ 5 (32) | 53 |
2 ^ 4 (16) | |
2^3 (8) | |
2^2 (4) | |
2^1 (2) | |
2^0 (1) | |
0
dividido por 64 117 da un cociente de 1 y un resto de 53. Así, sabemos que en la 7ª posición de la representación binaria de 117, habrá un 1 (es decir, 1XXXXXX). Para obtener las otras posiciones simplemente seguimos el proceso de división:
Divisor de | Resto | Cociente de la
2 ^ 6 (64) | 117 | 1
2 ^ 5 (32) | 53 | 1
2 ^ 4 (16) | 21 | 1
2^3 (8) | 5 | 0
2^2 (4) | 5 | 1
2^1 (2) | 1 | 0
2^0 (1) | 1 | 1
0
- Y por lo tanto, tenemos que la representación binaria del número decimal 117 es 1110101. Tenemos que recordar, que incluso si el resto va a 0 antes de la última etapa de la división, tenemos que continuar el proceso hasta 2 ^ 0. Así, en el caso el número decimal 48:
Divisor de | Resto | Cociente de la
2 ^ 5 (32) | 48 | 1
2 ^ 4 (16) | 16 | 1
2^3 (8) | 0 | 0
2^2 (4) | 0 | 0
2^1 (2) | 0 | 0
2^0 (1) | 0 | 0
0
La representación binaria es 110000 en lugar de 110, que recibiríamos si dejáramos de buceo cuando el resto primero alcanzó 0. Saber cómo descomponer un número en su componente de 1s y 0s es muy necesario para poder transmitir datos a la WS281X.