J'essaye de faire une conversion de hexadécimal en float64 en C++ avec une double précision IEEE 754. C'est la première fois que j'ai joué avec des bits alors peut-être que mon code n'est pas assez propre. Je ne sais pas pourquoi ma mantisse me donne des résultats étranges mais je pense que je fais quelque chose de mal.Hexadécimal à flotter IEEE 754 double précision C++
long int raw = 0x40000F0000000001;
int sign = raw >> 63;
long int mantissa = (raw & 0xFFFFFFFFFFFFF);
mantissa +=1;
double exp = ((raw >> 52) & 0x7FF) - 1023;
double result = pow(-1., sign) * mantissa * pow(2.0, exp);
cout << "MANTISSA: " << mantissa << " EXP: " << exp << endl;
cout << "RESULT: " << result << endl;
Et la sortie est:
MANTISSA: 16492674416642 EXP: 1
RESULT: 3.29853e+13
Tout le monde sait comment le faire?
Merci
Il en ajoutant '1' parce que votre code exemple montre '1.Fraction'. Et après avoir extrait beaucoup de 5, il utilise ensuite '15 ...' - c'est ce leader qu'il essaie d'ajouter. –
@MartinBonner Eh bien, alors il ne devrait certainement pas être '+ = 1' comme vous l'avez déjà couvert dans votre réponse. –