1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Converter número para binário em Java

Discussão em 'Programação' iniciada por Machacaz, 15 de Janeiro de 2009. (Respostas: 6; Visualizações: 7517)

  1. Machacaz

    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: 15 de Janeiro de 2009
  2. blueomega

    blueomega Power Member

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

    ha tambem o DataOutputStream que pode escrever floats
     
  3. Machacaz

    Machacaz Power Member

    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.
     
  4. Maedhros_Armand

    Maedhros_Armand Power Member

    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...
     
  5. Ronnie_03

    Ronnie_03 Power Member

    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.
     
  6. blueomega

    blueomega Power Member

    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
     
  7. Machacaz

    Machacaz Power Member

    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?
     

Partilhar esta Página