Buscar

ajuda como criar um algoritmo para converter um numero binario para decimal,octal,hexadecimal

💡 3 Respostas

User badge image

Andre Smaira

 

 

*/

public static int converteBinarioParaDecimal(String valorBinario) {

   int valor = 0;

 

   // soma ao valor final o dígito binário da posição * 2 elevado ao contador da posição (começa em 0)

   for (int i=valorBinario.length(); i>0; i--) {

      valor += Integer.parseInt(valorBinario.charAt(i-1)+"")*Math.pow(2, (valorBinario.length()-i));

   }

 

   return valor;

}


De binário para octal temos:

/**

public static String converteBinarioParaOctal(String binario) {

   StringBuilder sb = new StringBuilder();

   int posicaoInicial = 0;

   int posicaoFinal = 0;

 

   // começa a pegar grupos de 3 dígitos da direita para a esquerda, por isso posicaoInicial e posicaoFinal ficam na posição de fim da String

   posicaoInicial = binario.length();

   posicaoFinal = posicaoInicial;

 

   while (posicaoInicial > 0) {

      // pega de 3 em 3 caracteres da direita para a esquerda. Se o último grupo à esquerda tiver menos de 3 caracteres, pega os restantes (1 ou 2)

      posicaoInicial = ((posicaoInicial - 3) >= 0) ? posicaoInicial - 3 : 0;

 

      /*

      * Converte binário para decimal (de 0 a 7) que vai ser o mesmo caractere em octal e insere no início da String de retorno. Utilize o método

      * converteBinarioParaDecimal(String) mais acima.

      */

      sb.insert(0, converteBinarioParaDecimal(binario.substring(posicaoInicialposicaoFinal)));

 

      posicaoFinal = posicaoInicial;

   }

 

   return sb.toString();

}


De binário para hexadecimal temos:

/**

public static String converteBinarioParaHexadecimal(String binario) {

   char[] hexa = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};

   StringBuilder sb = new StringBuilder();

   int posicaoInicial = 0;

   int posicaoFinal = 0;

   char caractereEncontrado = '-';

 

   // começa a pegar grupos de 4 dígitos da direita para a esquerda, por isso posicaoInicial e posicaoFinal ficam na posição de fim da String

   posicaoInicial = binario.length();

   posicaoFinal = posicaoInicial;

 

   while (posicaoInicial > 0) {

      // pega de 4 em 4 caracteres da direita para a esquerda. Se o último grupo à esquerda tiver menos de 4 caracteres, pega os restantes (1, 2 ou 3)

      posicaoInicial = ((posicaoInicial - 4) >= 0) ? posicaoInicial - 4 : 0;

 

      /*

      *  Transforma o grupo de 4 caracteres em um dígito hexadecimal. Primeiro converte o grupo de 4 (ou menos) caracteres em decimal e depois pega

      *  o caractere correspondente no array de hexadecimais. Utilize o método converteBinarioParaDecimal(String) mais acima.

      */

      caractereEncontrado = hexa[converteBinarioParaDecimal(binario.substring(posicaoInicial, posicaoFinal))];

      // insere no início da String de retorno

      sb.insert(0, caractereEncontrado);

 

      posicaoFinal = posicaoInicial;

   }

 

   return sb.toString();

}

Fonte: https://pablonobrega.wordpress.com/2013/05/30/conversao-de-numeros-entre-bases-binario-decimal-octal-hexadecimal/

0
Dislike0
User badge image

Andre Smaira

De binário para decimal temos o seguinte algoritmo:

*/

public static int converteBinarioParaDecimal(String valorBinario) {

   int valor = 0;

 

   // soma ao valor final o dígito binário da posição * 2 elevado ao contador da posição (começa em 0)

   for (int i=valorBinario.length(); i>0; i--) {

      valor += Integer.parseInt(valorBinario.charAt(i-1)+"")*Math.pow(2, (valorBinario.length()-i));

   }

 

   return valor;

}


De binário para octal temos:

/**

public static String converteBinarioParaOctal(String binario) {

   StringBuilder sb = new StringBuilder();

   int posicaoInicial = 0;

   int posicaoFinal = 0;

 

   // começa a pegar grupos de 3 dígitos da direita para a esquerda, por isso posicaoInicial e posicaoFinal ficam na posição de fim da String

   posicaoInicial = binario.length();

   posicaoFinal = posicaoInicial;

 

   while (posicaoInicial > 0) {

      // pega de 3 em 3 caracteres da direita para a esquerda. Se o último grupo à esquerda tiver menos de 3 caracteres, pega os restantes (1 ou 2)

      posicaoInicial = ((posicaoInicial - 3) >= 0) ? posicaoInicial - 3 : 0;

 

      /*

      * Converte binário para decimal (de 0 a 7) que vai ser o mesmo caractere em octal e insere no início da String de retorno. Utilize o método

      * converteBinarioParaDecimal(String) mais acima.

      */

      sb.insert(0, converteBinarioParaDecimal(binario.substring(posicaoInicial, posicaoFinal)));

 

      posicaoFinal = posicaoInicial;

   }

 

   return sb.toString();

}


De binário para hexadecimal temos:

/**

public static String converteBinarioParaHexadecimal(String binario) {

   char[] hexa = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};

   StringBuilder sb = new StringBuilder();

   int posicaoInicial = 0;

   int posicaoFinal = 0;

   char caractereEncontrado = '-';

 

   // começa a pegar grupos de 4 dígitos da direita para a esquerda, por isso posicaoInicial e posicaoFinal ficam na posição de fim da String

   posicaoInicial = binario.length();

   posicaoFinal = posicaoInicial;

 

   while (posicaoInicial > 0) {

      // pega de 4 em 4 caracteres da direita para a esquerda. Se o último grupo à esquerda tiver menos de 4 caracteres, pega os restantes (1, 2 ou 3)

      posicaoInicial = ((posicaoInicial - 4) >= 0) ? posicaoInicial - 4 : 0;

 

      /*

      *  Transforma o grupo de 4 caracteres em um dígito hexadecimal. Primeiro converte o grupo de 4 (ou menos) caracteres em decimal e depois pega

      *  o caractere correspondente no array de hexadecimais. Utilize o método converteBinarioParaDecimal(String) mais acima.

      */

      caractereEncontrado = hexa[converteBinarioParaDecimal(binario.substring(posicaoInicial, posicaoFinal))];

      // insere no início da String de retorno

      sb.insert(0, caractereEncontrado);

 

      posicaoFinal = posicaoInicial;

   }

 

   return sb.toString();

}

Fonte: https://pablonobrega.wordpress.com/2013/05/30/conversao-de-numeros-entre-bases-binario-decimal-octal-hexadecimal/

0
Dislike0
User badge image

RD Resoluções

De binário para decimal temos o seguinte algoritmo:

*/

public static int converteBinarioParaDecimal(String valorBinario) {

   int valor = 0;

 

   // soma ao valor final o dígito binário da posição * 2 elevado ao contador da posição (começa em 0)

   for (int i=valorBinario.length(); i>0; i--) {

      valor += Integer.parseInt(valorBinario.charAt(i-1)+"")*Math.pow(2, (valorBinario.length()-i));

   }

 

   return valor;

}


De binário para octal temos:

/**

public static String converteBinarioParaOctal(String binario) {

   StringBuilder sb = new StringBuilder();

   int posicaoInicial = 0;

   int posicaoFinal = 0;

 

   // começa a pegar grupos de 3 dígitos da direita para a esquerda, por isso posicaoInicial e posicaoFinal ficam na posição de fim da String

   posicaoInicial = binario.length();

   posicaoFinal = posicaoInicial;

 

   while (posicaoInicial > 0) {

      // pega de 3 em 3 caracteres da direita para a esquerda. Se o último grupo à esquerda tiver menos de 3 caracteres, pega os restantes (1 ou 2)

      posicaoInicial = ((posicaoInicial - 3) >= 0) ? posicaoInicial - 3 : 0;

 

      /*

      * Converte binário para decimal (de 0 a 7) que vai ser o mesmo caractere em octal e insere no início da String de retorno. Utilize o método

      * converteBinarioParaDecimal(String) mais acima.

      */

      sb.insert(0, converteBinarioParaDecimal(binario.substring(posicaoInicial, posicaoFinal)));

 

      posicaoFinal = posicaoInicial;

   }

 

   return sb.toString();

}


De binário para hexadecimal temos:

/**

public static String converteBinarioParaHexadecimal(String binario) {

   char[] hexa = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};

   StringBuilder sb = new StringBuilder();

   int posicaoInicial = 0;

   int posicaoFinal = 0;

   char caractereEncontrado = '-';

 

   // começa a pegar grupos de 4 dígitos da direita para a esquerda, por isso posicaoInicial e posicaoFinal ficam na posição de fim da String

   posicaoInicial = binario.length();

   posicaoFinal = posicaoInicial;

 

   while (posicaoInicial > 0) {

      // pega de 4 em 4 caracteres da direita para a esquerda. Se o último grupo à esquerda tiver menos de 4 caracteres, pega os restantes (1, 2 ou 3)

      posicaoInicial = ((posicaoInicial - 4) >= 0) ? posicaoInicial - 4 : 0;

 

      /*

      *  Transforma o grupo de 4 caracteres em um dígito hexadecimal. Primeiro converte o grupo de 4 (ou menos) caracteres em decimal e depois pega

      *  o caractere correspondente no array de hexadecimais. Utilize o método converteBinarioParaDecimal(String) mais acima.

      */

      caractereEncontrado = hexa[converteBinarioParaDecimal(binario.substring(posicaoInicial, posicaoFinal))];

      // insere no início da String de retorno

      sb.insert(0, caractereEncontrado);

 

      posicaoFinal = posicaoInicial;

   }

 

   return sb.toString();

}

Fonte: https://pablonobrega.wordpress.com/2013/05/30/conversao-de-numeros-entre-bases-binario-decimal-octal-hexadecimal/

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta.

User badge image

Outros materiais