E ae pessoa criei um método que recebe numero decimal e retorna binario. Sou novato em programação e comecei aprender pelo java o código é o seguinte:
public void binario(int numero)
{
int d = numero;
int b;
while ( d > 1){
b = d % 2;
System.out.println ( b );
d -= d / 2 ;
}
}
Tipo eu quero saber se o java só arredonda o valar para cima, na finalização eu coloquei d-=d/2 tipo se o numero for 39 a metade é 19.5, eu pensei que o java arredonda isso para baixo ficando “19”, mas estava errado e como ele arredonda para cima no caso “20”, meu método acaba devolvendo o resultado errado e tbm quero perguntar como faço para que o resultado seja exibido de traz para frente “tipo se for 0101, exibir 1010” que é o jeito que eu deveria exibir o resultado do algoritmo caso ele funcionasse.
public void binario(int numero) {
int d = numero;
StringBuffer binario = new StringBuffer(); // guarda os dados
while (d > 0) {
int b = d % 2;
binario.append(b);
d = d >> 1; // é a divisão que você deseja
}
System.out.println(binario.reverse().toString()); // inverte a ordem e imprime
}
public void binario(int numero) {
int d = numero;
StringBuffer binario = new StringBuffer(); // guarda os dados
while (d > 0) {
int b = d % 2;
binario.append(b);
d = d >> 1; // é a divisão que você deseja
}
System.out.println(binario.reverse().toString()); // inverte a ordem e imprime
}
[]´s
[/quote]
vlw cara resolveu meu problema, mas me esplica essa finalização do laço d = d >> 1 que eu ñ entendi. Vlw
Então… o shift é o seguinte…
digamos que x valha 19, em binário 10011.
x >> 1
10011 >> 1 = 1001
percebeu!? eu eliminei o bit menos significativo (o bit mais a esquerda).
Isso chama deslocamento a esquerda ou shift a esquerda.
É o mesmo efeito que o resultado da divisão inteira por 2. (x /2)
Mas o deslocamento de bits permite fazer divisões por outras potências de 2 também.
x >> 2
10011 >> 2 = 100
que é o mesmo que 19 / 4.
PS: Em tempo, seu programa funciona com d =d/2, no lugar de d = d >> 1.
Hummm, entendi o que quis dizer com seu algoritmo implementado com operadores bitwise. Mas tenho uma dúvida: As operações que operação sobre o bit do número são mais rápidas que operações que lidam com por exemplo números inteiros?
[quote=rodrigousp]Então… o shift é o seguinte…
digamos que x valha 19, em binário 10011.
x >> 1
10011 >> 1 = 1001
percebeu!? eu eliminei o bit menos significativo (o bit mais a esquerda).
Isso chama deslocamento a esquerda ou shift a esquerda.
É o mesmo efeito que o resultado da divisão inteira por 2. (x /2)
Mas o deslocamento de bits permite fazer divisões por outras potências de 2 também.
x >> 2
10011 >> 2 = 100
que é o mesmo que 19 / 4.
PS: Em tempo, seu programa funciona com d =d/2, no lugar de d = d >> 1.