rodolfocoutinhoPJ 28 de out. de 2007
Por que você não conseguiu usar BigInteger?
korvinaPJ 28 de out. de 2007
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?
rodolfocoutinhoPJ 28 de out. de 2007
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]
korvinaPJ 28 de out. de 2007
“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]
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);
luBSPJ 29 de out. de 2007
Ou então vc pode fazer assim
Long decimal = Long . parseLong & # 40 ; args & # 91 ; 0 & # 93 ; & # 41 ;;
System . out . println & # 40 ; decimal + "(dec) = " + Long . toBinaryString & # 40 ; decimal & # 41 ;
+ "(bin)" & # 41 ;;
korvinaPJ 31 de out. de 2007
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.
jason_voorheesPJ 31 de out. de 2007
Para que contornar???
Usa o double ou o long…
korvinaPJ 1 de nov. de 2007
precisa de ser BigInteger… preciso de numeros com muiiiiiiiitos digitos…
vaninh0PJ 4 de nov. de 2007
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 ; "Numero decimal: " + args & # 91 ; 0 & # 93 ; + "\nBinario: " + decimalParaBinario & # 40 ; args & # 91 ; 0 & # 93 ; & # 41 ; & # 41 ;;
& # 125 ;
& # 125 ;