Conversion du format réel au format virgule flotante iee754
city hunter 3
Messages postés1Date d'inscriptiondimanche 18 février 2007StatutMembreDernière intervention 5 avril 2007
-
5 avril 2007 à 11:16
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 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
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.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 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.