j'ai besoin des programmeurs

j'ai besoin des programmeurs - C - Programmation

Marsh Posté le 12-04-2013 à 19:43:34    

Bonjour tout le monde ,
j'ai besoin de votre aides en programmation
je veux faire un programme qui convertit un nombre décimal avec la virgule en hexadécimal mais avec la norme IEEE 754
 
http://fr.wikipedia.org/wiki/IEEE_754
 
j'ai aucun idée par quoi je commence si vous pouvez m'aider je vous remercie
Merci pour tous

Reply

Marsh Posté le 12-04-2013 à 19:43:34   

Reply

Marsh Posté le 12-04-2013 à 20:19:31    

Mouais, si tu es débutant dans ce domaine, tu vas te prendre une douche froide: dépendemment de la qualité de conversion que tu veuilles, le code peux devenir extrêmement imbitable.
 
L'implémentation de référence dans ce domaine s'appelle "dtoa.c", tu peux voir le code source ici :
 
http://www.netlib.org/fp/dtoa.c
 
Le premier truc qui saute aux yeux, c'est que c'est moche. Même en virant les trucs obsolète (genre prototypes pré-c89), ça reste difficilement bitable. Déjà ce code contient 2 fonctions publiques (ouais, ça saute pas aux yeux) : strtod (ce que tu dois chercher) et dtoa (la réciproque de strtod, donc, en général utilisé par la fonction printf()). Pourquoi est-ce si compliqué ? Parce qu'il y a une tétrachiée de cas spécifiques (NaN, Infinity, flottant non normalisé, type d'arrondi) et si tu veux vraiment bien faire les choses, à savoir, garantir que ta chaine de caractère sera convertie en la plus proche valeur permise par le type (float ou double), bah, ça devient très vite le bordel.
 
Sinon, il existe des implémentations de strtod un peu moins complète que dtoa(), et leur code est en général un peu plus bitable.

Reply

Marsh Posté le 13-04-2013 à 00:27:58    

non c'est pas ça ce que je veux :/

Reply

Marsh Posté le 17-04-2013 à 21:48:16    

x-info a écrit :

Bonjour tout le monde ,


Salut

x-info a écrit :

je veux faire un programme qui convertit un nombre décimal avec la virgule


Oui parce qu'un nombre décimal sans virgule c'est plus un décimal c'est un entier...

x-info a écrit :

en hexadécimal mais avec la norme IEEE 754


Je ne comprends pas trop en quoi la représentation binaire des nombres à virgule flottante interviendra dans le fait que 123 deviendra 0x7B...
 

x-info a écrit :

j'ai aucun idée par quoi je commence si vous pouvez m'aider je vous remercie


Bah, commence par une fonction qui convertit un entier en hexa (123 => 7B). Facile, suffit de diviser par 16.
Ensuite une autre qui convertit une partie fractionnaire en hexa (0.123 => 0.1F72B). Facile, suffit de multiplier par 16.
 
Et enfin tu concatènes les deux...


Message édité par Sve@r le 17-04-2013 à 21:49:00
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed