Olá, um dia me desafiei para criar um conversor de decimal para binário, sem olhar nenhum código nem usar nenhuma biblioteca, com exceção do Math.pow. Depois de várias tentativas, consegui encontrar um padrão de operações matemáticas que eu conseguiria resolver o desafio. Após testes e mais testes, o algoritmo se mostrou eficaz, pois consegue converter números inteiros até 524.287 de forma rápida, resultando 1111111111111111111.
package binario;
public class TestaBinario {
public static void main(String[] args) {
int d = 524287;
long resultado = 0l;
long y = 1;
while (d > 0) {
if (d % 2 == 1) {
resultado += (long) Math.pow(10, 0);
d -= 1;
}
long x = (long) Math.pow(2, y);
if ((d - x) % (2 * x) == 0) {
resultado += (long) Math.pow(10, y);
d -= x;
} else {
y++;
}
}
System.out.println(resultado);
}
}