Boa tarde,
primeiramente gostaria de agradecer a todos que ajudam esse forum!
muito obrigado mesmo.
Vamos la, tenho que fazer um exercicio que transforma dec para binario. O lance eh o seguinte, gostaria que o programa coolocasse numa lista de array os resultados dos mods(%), porem eu tenho que definir um tamanho para o array antes. Soh que ai fica um problema, se ele nao eh usado ele se torna zero e atraplha meu calculo todo . e se o calculo realizado for maior que ele tmb me atraplah todo :T
importjava.util.Scanner;publicclassCbin{privateintaux,count=0;privateint[]bin=newint[10];publicvoidrecebeBin(){System.out.println("Digite um numero decimal");Scannersc=newScanner(System.in);inti=sc.nextInt();while(i/2!=0){count++;this.aux=i/2;i=this.aux;bin[count]=i%2;}System.out.println(bin[3]+""+bin[2]+""+bin[1]+""+bin[0]);/* for(int u=0;u<bin.length;u++){ System.out.println(bin[u]); }*/}}
List list = new ArrayList();
list.add("xyz");
list.add(42);
T
thingol
Primeiramente, você deve saber que um int pode ter até 32 bits, então a definição do seu array tem de conter 32 bits em vez de apenas 10. (Acho que você nunca deve ter testado com um número superior a 1024).
A seguir, para mostrar os bits, eu normalmente mostro todos os bits (mesmo os que vêm à esquerda e são zero). Se não quiser fazer isso, faça uma lógica para achar qual é o primeiro bit não-zero.
Se realmente quer saber quantos bits ocupa um número, desenterre aqueles livros de Matemática que falam sobre logaritmos:
Por exemplo, o logaritmo de 1024 na base 2 é 10 (ou seja, log(1024) / log (2) = 10). Então esse número irá ocupar 10 + 1 = 11 bits.
P
pedrolima88
Opa, valeu andre e thingol!
suas mensagens me ajudaram bastante!
o problema que agora ele ta contando apenas 3 casas no array, vou ver o que houve aqui valeu
B
Bruno_Laturner
Se for sem sinal e começar do zero, sim.
T
thingol
Se for sem sinal e começar do zero, sim.
OK.
P
pedrolima88
Essa logica estaria certa?
public void ordenaMostra(){
for(int u=bin.size();u>-1;u--){
System.out.print(bin.get(u));
}
}
}
estava tentando fazer isso, porem ele me retorna esse erro:
Necessito fazer de uma forma parecida como esse pois preciso ordenar os numeros em ordem invertida. Pois eh um exercicio baseado no calculo binario.
Valeu
B
Bruno_Laturner
comece de bin.size() -1
P
pedrolima88
que esquisito!
funcionou mas nao entendia a logica disso :S
o get.size me passa o tamanho total contando com 0 ? isso eh se ele tem 0123 espacos ele me passa que tem 4 espacos e nao 3 certo?
bom de qualquer forma muito obrigado!
ainda nao entendi mas valeu assim mesmo :D:D
B
Bruno_Laturner
A única linguagem que me lembro que o índice do último elemento é igual a quantidade de itens é Pascal.
Em Java, pelo menos, os índices começam em 0, e vão até quantidade - 1. E ao contrário como você fez, de qtde - 1 até 0.
P
pedrolima88
Realmente agora compreendi o que eu fiz.
ficar o dia todo programando as vezes voce comete cada falha animal xT
valeu!
ralphsilver
pedrolima88:
que esquisito!
funcionou mas nao entendia a logica disso :S
o get.size me passa o tamanho total contando com 0 ? isso eh se ele tem 0123 espacos ele me passa que tem 4 espacos e nao 3 certo?
bom de qualquer forma muito obrigado!
ainda nao entendi mas valeu assim mesmo :D:D
o que acontece é que o size é contado a partir do 1 e a alocação começca do 0… se um vetor tem o tamanho 3 ele aloca a posição 0,1 e 2
claudneto
ralphsilver:
pedrolima88:
que esquisito!
funcionou mas nao entendia a logica disso :S
o get.size me passa o tamanho total contando com 0 ? isso eh se ele tem 0123 espacos ele me passa que tem 4 espacos e nao 3 certo?
bom de qualquer forma muito obrigado!
ainda nao entendi mas valeu assim mesmo :D:D
o que acontece é que o size é contado a partir do 1 e a alocação começca do 0… se um vetor tem o tamanho 3 ele aloca a posição 0,1 e 2
O size não conta a partir do 1…ele conta todos, mas conta com o 0…ou seja…o índice acaba ficando 1 a menos…
array[0] = 0; //índice = 0; posição = 1
array[1] = 1; //índice = 1; posição = 2
array[2] = 2; //índice = 2; posição = 3
array[3] = 3; //índice = 3; posição = 4
Acontece isso pq não existe a posição 0º! Só existe a partir do 1º…