• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

klisman

Converter Float para Binário

2 mensagens neste tópico

Boas pesssoa,

Estou a tentar converter Float para Binário mas estou com uns problemas.

O meu código é o seguinte:

       

float numero = 5f;
        int numeroIEEE = Float.floatToRawIntBits(numero);
        int sinal = numeroIEEE & 0x80000000;
        int exponente = numeroIEEE & 0x7f800000;
        int decimal = numeroIEEE & 0x007fffff;

        System.out.println(Integer.toBinaryString(sinal) + "\n");
        System.out.println(Integer.toBinaryString(exponente) + "\n");
        System.out.println(Integer.toBinaryString(decimal) + "\n");

O java primeiro converte para o sistema internacional e segundo está na página da sun para irmos buscar os valores de cada componente(Sinal,expoente,parte décimal), temos de colocar as seguintes máscaras (& 0x80000000,& 0x7f800000,& 0x007fffff ). Mas no final o número aparece errado, já procurei e não consigo encontrar nada de jeito, será que ninguém me pode ajudar e descobrir qual o meu erro?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
public class ClasseConversora {

    public ClasseConversora(){
    }

        public void converteDouble(Double valor){
        long numeroConvertido = Double.doubleToRawLongBits(valor);
        long bitDeSinal = numeroConvertido & 0x8000000000000000L;
        long expoente;
        if( valor > 0 )
        	expoente = numeroConvertido & 0x7ff0000000000000L;
        else
        	expoente = numeroConvertido & 0xfff0000000000000L;
         long decimal = numeroConvertido & 0x000fffffffffffffL;

        JOptionPane.showMessageDialog(null,"Bit sinal:"+converteLongBinario(bitDeSinal)+"\n");
        JOptionPane.showMessageDialog(null,"Expoente:"+ converteLongBinario(expoente)+"\n");
        JOptionPane.showMessageDialog(null,"Decimal:"+ converteLongBinario(expoente)+"\n");

    }

    public void converteFloat(float valor){
        int numeroConvertido = Float.floatToRawIntBits(valor);
        int bitDeSinal = numeroConvertido & 0x80000000;
        int expoente;
        if( valor > 0 )
        	expoente = numeroConvertido & 0x7f800000;
        else
        	expoente = numeroConvertido & 0xff800000;
         int decimal = numeroConvertido & 0x007fffff;

        JOptionPane.showMessageDialog(null,"Bit sinal:"+converteInteiroBinario(bitDeSinal)+"\n");
        JOptionPane.showMessageDialog(null,"Expoente:"+ converteInteiroBinario(expoente)+"\n");
        JOptionPane.showMessageDialog(null,"Decimal:"+ converteInteiroBinario(expoente)+"\n");

    }
    public String converteInteiroBinario(int valor){
        String valorConvertido;
        valorConvertido = Integer.toBinaryString(valor);
        return(valorConvertido);
    }
    public String converteLongBinario(long valor){
        String valorConvertido;
        valorConvertido = Long.toBinaryString(valor);
        return(valorConvertido);
    }

     
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora