Possibilidade de numeros com mais de 10 digitos?

Boas fiz este algoritmo para converter decimais em binario, o problema é que só aceita numeros até 10 digitos…
Alguem me diz como posso fazer para que aceite numeros bem maiores…
Tentei usar BigInteger mas não consegui…

Obrigado.

[quote]
import java.util.;
import java.math.
;

public class Conversor{
public static void main(String[] args){
List<Integer> binario = new ArrayList<Integer>();
int decimal = Integer.parseInt(args[0]);
int k = (int)(Math.log(decimal)/Math.log(2))+1;
int aux = 0,ai;
for(int i=k;i>0;i–){
for(int j=0;j<binario.size();j++){
aux+=binario.get(j)*Math.pow(2,k-j-1);
}
ai=(decimal-aux)/(int)Math.pow(2,i-1);
binario.add(ai);
aux=0;
}
System.out.println(decimal + "(dec) = " + binario.toString() + “(bin)”);

}

}[/quote]

Por que você não conseguiu usar BigInteger?

deu erro

na operação ai=(decimal-aux)/(int)Math.pow(2,i-1);

que alterações posso fazer para que o programa funciona com digitos muito grandes?

korvina, eu não tenho como testar porque não tem java instalado aqui, mas se está havendo o estouro na variável ai faça o seguinte:

List&lt;BigInteger&gt; binario = new ArrayList&lt;BigInteger&gt;&#40;&#41;;
...
binario.add&#40;new BigInteger &#40;&#40;decimal-aux&#41;/&#40;int&#41;Math.pow&#40;2,i-1&#41;&#41;&#41;;

Espero que funcione!

Abraços,[/b]

[quote=“rodolfocoutinho”]korvina, eu não tenho como testar porque não tem java instalado aqui, mas se está havendo o estouro na variável ai faça o seguinte:

List&lt;BigInteger&gt; binario = new ArrayList&lt;BigInteger&gt;&#40;&#41;;
...
binario.add&#40;new BigInteger &#40;&#40;decimal-aux&#41;/&#40;int&#41;Math.pow&#40;2,i-1&#41;&#41;&#41;;

Espero que funcione!

Abraços,[/b][/quote]

nao funciona assim… nao expliquei bem…o arraylist binario pode ser integer porque so vai levar com 0’s ou 1’s…

o que tem de ser BigInteger é a variavel decimal que é o digito decimal que vai ser convertido para binario.

k vai receber o comprimento de digitos do binario que o decimal tem…

teria de ser algo do genero:

mas estoura ao calcular k… porque o Math.log nao funciona com BigInteger …

java:17: log(double) in java.lang.Math cannot be applied to (java.math.BigInteger)
int k = (int)(Math.log(decimal)/Math.log(2))+1;

e em ai=(decimal-aux)/(int)Math.pow(2,i-1);

java:24: operator - cannot be applied to java.math.BigInteger,int
ai=(decimal-aux)/(int)Math.pow(2,i-1);

Ou então vc pode fazer assim

		Long decimal = Long.parseLong&#40;args&#91;0&#93;&#41;;
		System.out.println&#40;decimal + &quot;&#40;dec&#41; = &quot; + Long.toBinaryString&#40;decimal&#41;
				+ &quot;&#40;bin&#41;&quot;&#41;;

o problema é que estoura a calcular o logatirmo de um biginteger

porque o Math.log so aceita double…

alguem sabe como contornar o assunto?!

Obrigado.

Para que contornar???

Usa o double ou o long…

precisa de ser BigInteger… preciso de numeros com muiiiiiiiitos digitos…

Usando o toBinaryString()

public class Conversao&#123;
   public static int decimalParaBinario&#40;String numero&#41; &#123;
      return Integer.toBinaryString&#40;numero&#41;;
   &#125;
   public static void main&#40;String args&#91;&#93;&#41;&#123;
      System.out.print&#40;&quot;Numero decimal&#58; &quot;+args&#91;0&#93;+&quot;\nBinario&#58; &quot;+decimalParaBinario&#40;args&#91;0&#93;&#41;&#41;;
   &#125;
&#125;