rafmattos Postado Maio 20, 2005 Denunciar Share Postado Maio 20, 2005 Olá pessoal, alguém sabe como eu faço para transformar Binario p/ Decimal...Dede já agradeço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 21, 2005 Denunciar Share Postado Maio 21, 2005 É só elevar 2 à uma sequência começando por 0 (para cada um dos bits) e multiplicar pelo valor do bit. Essa multiplicação serve para ignorar os valores de bit 0 (já que qualquer número multiplicado por 0 vai dar 0). Exemplo (considere ^ como "elevado a" - no código mesmo você terá que utilizar Math.pow()):1102^2*1 + 2^1*1 + 2^0*011012^3*1 + 2^2*1 + 2^1*0 + 2^0*1Sacou? Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 iSoron Postado Maio 21, 2005 Denunciar Share Postado Maio 21, 2005 Um algoritmo mais otimizado seria você utilizar uma só variável. A cada passo ele soma 1 (se for o caso) e multiplica por 2. Assim você aproveita os resultados anteriores. Ex: 1101tmp = 0 soma 1, pois o bit 4 é verdadeiro -> tmp = 1; como há um bit 3, multiplica por dois -> tmp = 2; soma 1 novamente, pois o bit 3 é verdadeiro -> tmp = 3; como há um bit 2, multiplica por dois -> tmp = 6; não soma 1, pois o bit 2 é falso -> tmp = 6; como há um bit 1, multiplica por dois -> tmp = 12; soma 1 de novo, pois o bit 1 é verdadeiro -> tmp = 13; não há proximo bit, então termina. resultado: 13É bem facil implementar.[]'s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Maio 27, 2005 Denunciar Share Postado Maio 27, 2005 Pessoal obrigado pela ajuda, mas ainda não consegui já tentei de tudo que é jeito e ainda nada, é que to começando a programar em java agora, se vocês poder me ajudar com o código ficarei agradecido. public static int BinToDec(String bin) { int i, aux, retorno, length_bin; retorno = 0; length_bin = bin.length(); for (i=0;i<length_bin;i++) { aux = bin.charAt(i); retorno = ( ((2^(length_bin-i) ))) + retorno; } return(retorno); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 28, 2005 Denunciar Share Postado Maio 28, 2005 Bom, já identifiquei os problemas, por isso vão algumas perguntas (as quais se você mesmo responder, encontrará a solução):Por que você coloca um valor em "aux" e não utiliza esse valor depois (não há referência a aux em lugar algum)?Tem certeza que atribuir um char para um inteiro te dará o valor correspondente do mesmo? Faça o teste para imprimir "aux" e você verá.Leia novamente o primeiro post a respeito do "^" (foi só uma notação utilizada no exemplo!).O resultado de "length_bin-i" é mesmo o que você precisa? Note que no cálculo os valores dos expoentes começam a partir de 0.Tente consertar aí. De preferência, escreva cada um dos elementos do cálculo (usando System.out.print) dentro da função e veja se eles estão realmente com os valores esperados. Qualquer coisa, 'stamos aí.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rafmattos Postado Maio 30, 2005 Autor Denunciar Share Postado Maio 30, 2005 Obrigado pela ajuda... agora eu consegui.public static int BinToDec(String bin){ int length_bin = 0, aux = 0, retorno = 0, i; length_bin = bin.length(); for (i=0;i<length_bin;i++) { aux = Integer.parseInt(bin.substring(i,i+1)); retorno += aux*(int)Math.pow(2,(length_bin-i))/2; } return(retorno); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
rafmattos
Olá pessoal, alguém sabe como eu faço para transformar Binario p/ Decimal...
Dede já agradeço.
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.