Archive

Posts Tagged ‘octal hexadecimal binário decimal’

Conversão de números entre bases (binário, decimal, octal, hexadecimal)

Há alguns dias recebi e-mail de uma pessoa com um pedido para ajudar na conversão de números entre bases utilizando Java. Claro que não poderia ser utilizada nenhuma classe já existente na JVM, pois a ideia era criar um código que efetuasse a transformação de forma manual. Assim, até como uma forma de exercício mental, elaborei as conversões abaixo.

Atenção: você encontrará alguns trechos de código repetido, mas isso acontece porque quis fazer com que cada método (com algumas exceções) pudesse ser executado de forma atômica.

Decimal

Decimal para Binário

/**
* Converte decimal para binário. A regra é ficar dividindo o valor por 2, pegar o resto de cada divisão e inserir o valor da direita para a esquerda na String de
* retorno. O algoritmo é executado até que o valor que foi sucessivamente dividido se torne 0. Obs.: assume que o valor passado é inteiro positivo.
* Exemplo: 13
* 13/2 = 6 -> resto 1 -> Resultado: 1
* 6/2 = 3  -> resto 0 -> Resultado: 01
* 3/2 = 1  -> resto 1 -> Resultado: 101
* 1/2 = 0  -> resto 1 -> Resultado: 1101
*
* Resultado: 1101
*
* @param valor número decimal a ser convertido
* @return String contendo o valor em binário
*/
public static String converteDecimalParaBinario(int valor) {
   int resto = -1;
   StringBuilder sb = new StringBuilder();

   if (valor == 0) {
      return "0";
   }

   // enquanto o resultado da divisão por 2 for maior que 0 adiciona o resto ao início da String de retorno
   while (valor > 0) {
      resto = valor % 2;
      valor = valor / 2;
      sb.insert(0, resto);
   }

   return sb.toString();
}

Leia mais