Conversion du format réel au format virgule flotante iee754

city hunter 3 Messages postés 1 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 5 avril 2007 - 5 avril 2007 à 11:16
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 7 avril 2007 à 12:52
slt a tous,bon j s8 1peu dans la galére et j voudrais bien que quelqu'un m'aide en me donnant l'algorithme en delphi pour la conversion d'un nombre réel en virgule flotante,et merci

4 réponses

sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
5 avril 2007 à 17:05
euh, c'est pas la même chose ?

Simon
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
5 avril 2007 à 23:30
Deja evite le langage sms.

ensuite, quand on parle de type réel il faut preciser si on parle du type real ou des types flottant en general.

Float = virgule flottante != virgule fixe (qui fait appel a deux entier).

delphi fournis plusieurs types de flottant et a retenir :

double (64 bits)
single (32 bits)
extended (80 bits)
currency (64 bits)
comp (64 bits)

selon la norme IEEE754 :

flottant 32 bits : type single pour single precision (simple precision) respecte la norme IEEE754
23 bits : mantisse
8 bits : exposant
1 bit : signe

flottant 64 bits : type double pour double precision (double precision) respecte la norme IEEE754
52 bits : mantisse
11 bits : exposant
1 bit : signe

flottant 80 bits : type extended pour extended precision (precision etendue) selon le standard 80bits Float definit par Intel et disponible sur tout les microprocesseurs xxxx86 (AMD et Intel confondus) et donc hors norme IEEE754.
64 bits : mantisse
15 bits : exposant
1 bit : signe

les micropocesseur xxxx86 ne supporte que le 80bits float pour donner une FPU assé grande.
on peu donc regler la FPU pour determiner des flottants inferieur au 80bits float notement en 64 et 32 bits float IEEE754.
c'est ce que fait Delphi pour le type Single et Double, sauf que tout les calculs de flottant seront fait en 80 bits float puis convertis en 64 ou 32 bits float.

cad :

si j'ecris :

var
 A, B, R : single
begin
   R :=  (B*B) + (A*A);
end;

on obtiendras :
R = (single) (extended) ((extended) B * (extended) B) + ((extended) A * (extended) A);

c'est meme d'ailleur pour cela que toute les fonctions mathematique ecrite dans Math.pas utilise le Type Double et non le type Extended! car les calculs mathematique doivent etre fait dans la norme 64bits float IEEE754 pour etre compatible avec les resultats mathematique fait sur calculatrice ou sur calculateur specialisé.

donc si on doit ecrire un programme de calcul scientifique, il faut utiliser Double comme type de flottant car il repond a la norme IEEE754.
Utiliser le format Extended ou Real serait une trés grosse erreur (fatale) car elle fausserait l'interpretation des chiffres.

celui qui ne comprend pas cela, vaut mieux (pour les astronautes) qu'il ne bosse pas a la Nasa.

0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
6 avril 2007 à 09:32
Merci fOxi pour ce cours magistral...

C'est quoi FPU ?

(Et sinon, ça se passe bien pour toi à la Nasa ? )

Simon
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
7 avril 2007 à 12:52
FPU = Floatting Point Unit (unité de calcul en virgule flottante)

la FPU c'est ce qui permet de manipuler les nombres flottant dans un processeur.
sans FPU on devrait se contenter des nombres a virgule fixe ou alors il faudrait l'emuler de maniere logiciel (donc plus lente) ou avoir une FPU externe au processeur (a l'instar des processeur arithmetique de l'epoque).

en gros tu as la FPU physique et la FPU microcodée passant par l'ALU (Arithmetic Logic Unit) (FPU emulée).
les processeurs actuels possede une vraie FPU.

0
Rejoignez-nous