La otra forma de “resolverlo usando números binarios” es ver las operaciones desde el punto de vista de la computadora, que en realidad es la que “usa” números binarios.
Las respuestas a esta pregunta dada hasta ahora, ilustran cómo un algoritmo puede tomar el número (50, en el ejemplo) en la representación binaria interna de la computadora, y calcular una cadena de dígitos que mostrará este valor en binario.
El siguiente algoritmo hace lo contrario, es decir, tomar un número, que es una cadena de dígitos decimales, como su entrada, y convertirlo a la representación interna (binaria) de la computadora:
- ¿Cuál es el algoritmo utilizado para mostrar el orden de amigos que se muestra en toda la lista de amigos en Facebook?
- ¿Apache Hadoop es realmente bueno para algoritmos recursivos?
- ¿Cuál es el libro de estructura de datos mejor y más fácil de entender para un estudiante promedio?
- ¿Qué otro género o sabores de la música se pueden programar algorítmicamente aparte de la música clásica?
- ¿Qué es el algoritmo de transformación de Burrows-Wheeler y cómo se usa en aplicaciones del mundo real?
0) Establezca un puntero, o índice, a los dígitos del número [decimal] a ser resuelto. Digamos, un valor 0 apunta al primer dígito del número, un valor 1 apunta al segundo dígito, y así sucesivamente.
1) Inicialice este puntero a 0.
2) Inicializar una suma a 0.
3) Tome el número binario que representa el dígito señalado por su índice y agréguelo a la suma.
Debe saber y poder buscar o calcular los valores binarios de cada uno de los diez dígitos decimales. (Los detalles sobre la mejor manera de hacer esto varían con el lenguaje de programación utilizado).
0 = 0000
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
6 = 0110
7 = 0111
8 = 1000
9 = 1001
4) Si quedan más dígitos del número, incremente el puntero por 1, multiplique la Suma por diez [decimal, que es 1010 binario] y regrese al paso 3.
5) Si no quedan más dígitos, pare. El resultado resuelto está en la suma.
Los siguientes ejemplos muestran un rastro de los pasos del algoritmo a medida que se ejecuta.
Ejemplo 1: numeral = “50”
suma de dígitos del puntero de paso, después de este paso
1 0 “5” n / a
2 0 “5” 00000000
3 0 “5” 00000101
4 1 “0” 00110010
3 1 “0” 00110010
5 1 “0” 00110010
La computadora ahora contiene el valor 50, representado en su representación binaria interna, que es 00110010.
Ejemplo 2: numeral = “132”
suma de dígitos del puntero de paso, después de este paso
1 0 “1” n / a
2 0 “1” 00000000
3 0 “1” 00000001
4 1 “3” 00001010
3 1 “3” 00001101
4 2 “2” 10000010
3 2 “2” 10000100
5 2 “2” 10000100
La computadora ahora contiene el valor 132, representado en su representación binaria interna, que es 10000100.