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=“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<BigInteger> binario = new ArrayList<BigInteger>();
...
binario.add(new BigInteger ((decimal-aux)/(int)Math.pow(2,i-1)));
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);
public class Conversao{
public static int decimalParaBinario(String numero) {
return Integer.toBinaryString(numero);
}
public static void main(String args[]){
System.out.print("Numero decimal: "+args[0]+"\nBinario: "+decimalParaBinario(args[0]));
}
}