Binário para Decimal

6 respostas
E

Pessoal,

Encontrei uma função para converter de decimal para binário, mas ao contrário não encontrei a função …

Alguém poderia me indicar ? Ou vou ter que codificar todo o processo ??

Obrigado,

Eduardo

6 Respostas

L

Eduardo,

Utilize o método estático da wrapper class Integer.

toBinaryString(int i)
Returns a string representation of the integer argument as an unsigned integer in base 2.

Se quiser saber mais sobre o método…
http://java.sun.com/j2se/1.4.1/docs/api/java/lang/Integer.html#toBinaryString(int)

E

Obrigado pela resposta,

Esta função estou utilizando, gostaria de saber como fazer para realizar o contrário desse método …

De binário para decimal …

Obrigado,

Eduardo

L

Ahhh

o contrário…

não sei se tem algum método pronto, mas se eu fosse vc…

faria um método estático que recebe uma string com a representação binária de um número, transforme isto em um array com cada valor.

passe verificando o array, se tiver valor 0 soma 0, se tiver valor 1 soma 2 ^ posição do array.

Não esqueça que o bit menos significativo é o da direita. então na verdade a última posição do array é a que tem que ser 2 ^ 0 e a primeira 2 ^ array.lenth…

Não sei se ficou complicado, se alguém tiver uma sugestão menos complicada… gostaria de apreciar tb…

falow!

:lol:

Bani

Quando resolvi fazer um programa para converter ascii para binário e vice-versa (como na minha assinatura), escolhi utilizar os seguintes algoritmos:

Para converter de decimal para um binário de 8 bits (o resultado é um StringBuffer de 8 caracteres):

for (int p = 7; p >= 0; p--) { binario.append((char) (((decimal >> p) & 1) + 48)); }
Esse código inclusive é bem mais eficiente do que o método toBinaryString(int) da classe Integer, pois ele usa um método genérico pra converter para todas as bases, não aproveitando as “facilidades” de trabalhar diretamente com binários.

Para converter um String de 8 caracteres para um decimal (a idéia é exatamente a mesma da mensagem acima, mas utilizando o operador correspondente para fazer as operações de 2^x):

for (int p = 0; p < 8; p++) { decimal += s[7 - p] == '1' ? (1 << p) : 0; }

Se alguém quiser ver o código completo do meu programa ascii/binario, está em http://ascii2binary.codigolivre.org.br/

L

Muito interessante esta implementação Bani.

Achei legal. Parece que tem uma versão dele pra download no seu Blog neh?

Vou dar uma olhada depois…

Mas para o caso de números em geral ele funiona tb?

[]'s

:wink:

Bani

O link no meu blog é o mesmo colocado acima, que é onde tem o link para uma versão em Servlet+JSP, API, download (os fontes e os class estão dentro do mesmo jar - horrível, eu sei), etc.

Os códigos passados funcionam exatamente para números, mas claro que desde que você não tente passar algo muito estranho para eles… O número decimal supõe-se que vai ser um inteiro positivo e o binário uma char[] de 8 elementos.

Criado 23 de maio de 2003
Ultima resposta 24 de mai. de 2003
Respostas 6
Participantes 3