Ola,
estou no 1 sem de engenharia e tenho que apresentar um projeto que implementa um IEEE 754 só que não deve haver strings…
gostaria que alguem me ajuda-se a separa a parte inteira da fracionaria???
Pelo que suponho, você tem de trabalhar apenas com arrays de bytes, ou então, no máximo, supor que você pode usar a multiplicação (long) da linguagem que você vai usar para implementar a IEEE 754, não?
O IEEE-754 é uma especificação bem grande, como você deve saber; então seu trabalho, eu suponho, deve ser implementar apenas um pequeno e minúsculo subconjunto da IEEE 754. Se você conseguir implementar:
- Normalização de um float;
- Multiplicação de 2 floats (32 bits);
- Adição de 2 floats (32 bits - a adição é mais difícil que a multiplicação, como você deve saber - ou não estudou ainda a especificação?)
Acho que já é bastante coisa.
Aprenda a usar direitinho os operadores de bits - &, |, ^, <<, >>, >>> - você vai usá-los até dizer chega.
eu tenho que implementa em c, o IEEE 754 (um float e um double) :shock:
Obrigada …
vo pesquisa um pouco mais sobre isso …
Dica: acho que uma das partes mais chatas é tratar o bit de “carry” (que é necessário para implementar somas de dupla precisão, por exemplo).
Se você souber um pouco de assembler, e souber como é que se usa assembler dentro do C, acho que é mais fácil tratar isso no assembler mesmo que em C.
Outra dica: veja direitinho O QUE É que você vai ter de implementar. Como a especificação IEEE é MUITO EXTENSA, você deve ler a especificação e escolher direitinho só o que você vai ter tempo de implementar e dar a justificativa para o que você não vai conseguir implementar no seu trabalho. Vale a pena estudar um pouquinho a especificação antes de pôr a mão na massa (eu digo que isso vai DAR BASTANTE TRABALHO.)
Bahh, obrigadaoooo
vo da uma olhada nisso…
tpw a principio eh um programa aonde a entrada é um numero decimal, a saida é esse numero na forma IEEE 754 float e double e em hexa…
mas vlw msm jah estou com algumas ideias
Abraço
Pelo que você falou, não pode usar Double.parseDouble, não?
Se você pudesse, seria bem bobo:
double d = Double.parseDouble ("12345.67");
float f = (float) d;
byte[] bytesD = Double.doubleToRawLongBits (d);
byte[] bytesF = Float.floatToRawLongBits (f);
// Imprima em hexadecimal o valor de bytesD
...
// Imprima em hexadecimal o valor de bytesF
...