Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

klisman

float para hexadecimal

Mensagens Recomendadas

klisman    0
klisman

boas pessoal,

alguém me sabe dizer se existe alguma função para converter float para hexadecimal?

já andei à procura na net, mas não encontrei o que pretendia...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
johnsboy    0
johnsboy

tambem podes converter tu nao e muito dificil.

sabes que

0 corresponde a 0

1-1

2-2

...

10- A

11 - B

12 - C

13 - D

14 - e

15 - F

pronto a partir disto e facil.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
TheDark    0
TheDark

Francamente, não consigo imaginar a representação hexadecimal de um número de vírgula flutuante.

O máximo que consigo imaginar é separar o número em parte inteira e decimal, converter separadamente, e no fim concatenar com uma vírgula no meio :D

Mas não vás por mim, provavelmente esta ideia está errada.

Respondendo à tua pergunta, não, não existe nenhuma função standard que faça o que pretendes.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pixel    0
pixel

Eu faria assim:

#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[])
{
    union
    {
        float f;
        long int li;
    } var;
    
    printf("Tamanho de float: %d\n", sizeof(float));
    printf("Tamanho de long int: %d\n", sizeof(long int));
    
    printf("Introduza um valor real: ");
    scanf("%f", &var.f);
    printf("O seu valor:\n\t%f\n\t%LX\n", var.f, var.li);

    system("PAUSE");
    return 0;
}

A ideia é vizualizar, em hexadecimal, o conteúdo de uma variável float.

Não sei se é bem isto que estavas a percisar, mas fica aqui a ideia.

Cumps.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
klisman    0
klisman

sim temos de separar o número por sinal, expoente e parte decimal...O problema é a parte decimal, tem de haver alguma função para isso, porque o meu Prof disse-me que isso se fazia com 2 linhas de código...O problema é que ele não diz quais :fartnew2:

Em java há umas funções para tirar cada um dos 3 componentes de um número, mas o resultado não dá bem, já coloquei aqui um post para me ajudarem mas ninguém responde :dontgetit:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
klisman    0
klisman

Já que te recusas a ler a página da wikipedia que te mandei vou experimentar dar-te só o link com a imagem que mostra o que tu queres (e que está no artigo cujo link aqui coloquei):

http://upload.wikimedia.org/wikipedia/commons/d/d2/Float_example.svg

Por acaso não vi, mas não foi de prepósito, desculpa.

Eu a parte teórica sei, à mão consigo fazer, no pc é que nao...

O problema é o seguinte,

na parte decimal cada bit tem um peso,

bit 23 = 1

bit 22 = 0.5

bit 21 = 0.25

bit 20 = 0.125

bit 19 = 0.0625

se a parte decimal for 1,0625 fica 10001xxxxxx....

o meu problema é fazer isso automaticamente....

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrosorio    5
pedrosorio

Porque é que estás a complicar? Para mim é muito mais simples converter de binário para hexadecimal já que cada conjunto de 4 bits tem correspondência directa a um algarismo hexadecimal.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
klisman    0
klisman

Porque é que estás a complicar? Para mim é muito mais simples converter de binário para hexadecimal já que cada conjunto de 4 bits tem correspondência directa a um algarismo hexadecimal.

Não estou a complicar, foi me pedido que convertesse float para Hex e isso que eu te disse no comentário anterior, não fui eu que inventei, isso é mesmo assim....

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrosorio    5
pedrosorio

Eu sei que não estás a inventar (lol). Mas o que estás a fazer é a conversão implícita do binário para o decimal. Aquilo que tens que fazer limita-se a converter binário para hexadecimal:

0000 - 0

0001 - 1

0010 - 2

0011 - 3

...

1010 - A

1011 - B

1100 - C

1101 - D

1110 - E

1111 - F

Portanto pega na representação binária do float e converte-a para hexadecimal.

(Como deves saber, a representação binária pode ser obtida algarismo a algarismo assim:

algarismo a, contando da direita a partir de 0: (variavel>>a & 1)

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


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade