Bonjour,
Je voudrais savoir comment est codé un float64 en Java, svp.
Par exemple pour le float32 :
- 23 bits pour la mantisse
- 8 bits pour l'exposant
- 1 bit pour le signe
Merci d'avance
Bonjour,
Je voudrais savoir comment est codé un float64 en Java, svp.
Par exemple pour le float32 :
- 23 bits pour la mantisse
- 8 bits pour l'exposant
- 1 bit pour le signe
Merci d'avance
le float de 64 bit en java est un double : un nombre flottant double précision selon la norme IEEE 754. Il est donc constitué de :
- 52 bits de mantisse.
- 11 bits d'exposant
- 1 bit de signe
Ok! Merci beaucoup!
Mais nouveau petit problème. Avec le code hexa ci-dessous (qui représente un float64), je suis sensé trouver 39640, mais je n'y arrive pas... Un petit coup de main serait la bienvenue.
00 00 00 00 40 E3 B5 00
Sinon quelqu'un connait la formule mathématique pour calculer manuellement la valeur d'un float64 codée en binaire??
Code : Sélectionner tout - Visualiser dans une fenêtre à part byte[] myTab = new byte { 0x00, 0x00, 0x00, 0x00, 0x40, 0xe3, 0xb5, 0x00 };
D'ou viens cette chaine? as tu des indications sur cette façon de coder?
pour plus d'infos sur la façon dont la jvm se représente les float...
http://java.sun.com/docs/books/jvms/...doc.html#33377
A mon avis tu es bon pour coder la fonction à la main.
double decodeFloat64(byte[] binDouble);
voici de la doc pour comprendre comment est codé le float (ou double) en binaire:
http://fr.wikipedia.org/wiki/Float
Sinon, tu peux utiliser les méthodes nio, voir le code qu'elles utilisent:
edit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 PipedOutputStream out = new PipedOutputStream() PipedInputStream in = new PipedInputStream(out); DataInputStream reader = new DAtaInputStream(in); out.write(myTab); in.readDouble();
pour ton exo, 39640 en binaire c'est 1.001101011e+1111 d'après ma calculette. Ça ne correspond pas a ton tableau de byte.
Partager