Converter número para binário em Java

Machacaz

Power Member
Queria fazer uma pequena aplicação... Para converter um número no seu equivalente em binário (JAVA).
Andei a pesquisar e as soluções que vi, originou a conversão de 4 para binário num número com 10 casas ( zeros e uns...)
Alguém sabe como se faz.

Algo deste género funciona para inteiros... não para "floats":
Código:
int i = Integer.parseInt(sn);
String s = Integer.toBinaryString(i);

Alguma sugestão?
 
Última edição pelo moderador:
Queria fazer uma pequena aplicação... Para converter um número no seu equivalente em binário (JAVA).
Andei a pesquisar e as soluções que vi, originou a conversão de 4 para binário num número com 10 casas ( zeros e uns...)
Alguém sabe como se faz.

Algo deste género funciona para inteiros... não para "floats":
Código:
int i = Integer.parseInt(sn);
String s = Integer.toBinaryString(i);

Alguma sugestão?

Integer.toBinaryString(Float.floatToRawIntBits(Numero));

ha tambem o DataOutputStream que pode escrever floats
 
Obrigado pela resposta...
Mas o que tu me deste é a representação em IEE754.
O que eu queria mesmo... era algo para converter algo do genero de 11,375 para 11011,011, de 4 para 100. E isso eu não achei.
Li algures que a maneira seria separar as partes reais e decimais e separadamente converter para binário.
 
Obrigado pela resposta...
Li algures que a maneira seria separar as partes reais e decimais e separadamente converter para binário.

Creio que o que te referes é o calculo manual. Se não estiver errado... tens que dividir o número decimal por 2 até encontrares um resto na divisão que só é divisível por ele mesmo. Os valores de resto são o teu número binário e para a parte decimal fazes o mesmo. Não me recordo se pode ser feita a conversão directamente mas estou na ideia que não. Seja como for, se esta é a ideia podes encontrar isso em qualquer livro de sistemas digitais. Ou provavelmente no Wikipédia. Mas foi a única coisa que pude tirar de separar as partes e converter...
 
Para converter a parte decimal para binario multiplicas a parte fracionária por 2 até a parte decimal ser 0. O teu numero serão os inteiros.

Vou dar um exemplo, porque assim fica confuso:

queres converter o numero 4,125.
Convertes primeiro o 4 que é 100.
A parte fraccionaria fica:
0,125 * 2 = 0,25
0,25 * 2 = 0,5
0,5 * 2 = 1,0

O resultado é 0,001. Se somares 100, obtens 100,001.

Nos produtos, se por exemplo o produto desse 1,01 a seguir só multiplicavas 2 por 0,1, ou seja, multiplicas só a parte fraccionaria.


Se estiver muito confuso diz, que vou tentar ser mais claro.
 
Obrigado pela resposta...
Mas o que tu me deste é a representação em IEE754.
O que eu queria mesmo... era algo para converter algo do genero de 11,375 para 11011,011, de 4 para 100. E isso eu não achei.
Li algures que a maneira seria separar as partes reais e decimais e separadamente converter para binário.

converter dessa forma pode dar alguns problemas, principalmente se não restringires o numero de casas decimais em binario

uma dizima finita em decimal pode virar uma dizima infinita em binario (quase sempre vira)

com o standart basta fazeres shifts a mantissa
 
Vou rescuscitar um morto...

E fazer o contrário? isto é... converter de notação ieee754 para double?
Tentei fazer isto:
String value = box8.getText();
long l = Long.parseLong(value);
double valueX = Double.longBitsToDouble(l);

mas obtenho um erro, devido ao tamanho da string... no máximo terá 32 caracteres e deste modo a conversão só suporta uma string com 20 caracteres.

então pensei em converter em a string value num bitset, visto que á partida só serão inseridos "1" e "0"... mas acabo por ter o mesmo problema.
A conversão posterior entre bitfield e long...

Ou seja... alguma ajuda? para converter uma string que iria representar um numero IEEE 754 para double?
 
Back
Topo