Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1741 connectés 

  FORUM HardWare.fr
  Programmation

  assembleur : multiplication de 2 nombres dans la norme IEEE

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

assembleur : multiplication de 2 nombres dans la norme IEEE

n°26668
AurB
Posté le 23-04-2001 à 13:17:30  profilanswer
 

Comme j'ai dit dans le sujet je dois faire la multiplication de 2 nombres dans la norme IEEE et c'est assez balaise vu que je suis un débutant
Pouvez-vous m'aider ?
Merci d'avance

mood
Publicité
Posté le 23-04-2001 à 13:17:30  profilanswer
 

n°26728
z51
Posté le 23-04-2001 à 16:20:12  profilanswer
 

Tu parles de la représentation IEEE des nombres flottants ?

n°26782
AurB
Posté le 23-04-2001 à 20:41:23  profilanswer
 

oui

n°26793
BifaceMcLe​OD
The HighGlandeur
Posté le 23-04-2001 à 21:46:01  profilanswer
 

Sur combien d'octets ? Parce que des représentations IEEE de flottants, il y en a pléthores ! J'ai déjà vu sur 4, 8 et 10 octets, et ça m'étonnerait pas qu'il y en ait d'autres !

n°26798
z51
Posté le 23-04-2001 à 22:48:42  profilanswer
 

Alors alors ... petit cours sur le format IEEE ...
 
Les nombres à virgule flottante sont stockés dans les huit registres internes du coprocesseur sous la forme du standard IEEE : signe, exposant et mantisse. Ces registres ont une taille interne de 80 bits.
 
les nombres flottants sont utilisables en deux formats : le format 32 bits correspond aux flottants "simple précision" (float en C) : 1 bit de signe, 8 bits pour l'exposant et 23 bits pour la mantisse. Le format 64 bits correspond à la "double précision" (double en C) : 1 bit de signe, 11 d'exposant et 52 de mantisse.
 
On a donc la représentation suivante, qui correspond à la représentation normalisée des nombres scientifiques (IEEE) :
 
f = (-1)^signe x 2^(exposant-biais) x 1,mantisse
 
où f désigne le nombre flottant. Le biais est une valeur permettant de coder un exposant positif; il dépend du format de codage : si e est le nombre de bits représentant l'exposant, le biais vaut :
 
biais = 2^(e-1) -1
 
soit par exemple 1023 pour une représentation 64 bits (11 bits d'exposant), 127 en 32 bits. Le 1 de la mantisse est implicite, et seule la partie suivante est stockée. La représentation normalisée est donc :
 
[ signe | exposant | mantisse ]
 
Codons par exemple 5,25 sur 32 bits. 5,25 vaut 2^2 + 2^0 + 2^-2, ce qui nous donne en binaire 101,01 ou encore 1,0101 x 2^2. L'exposant vaut donc 2+127. on a donc la représentation suivante :
 
0   10000001  01010000000000000000000
s     exp            mantisse
 
 
En C ça donne ça :
 
float f;
unsigned long mf = *(long *)&f; // représentation IEEE de f
unsigned long sign = mf&0x80000000;  // signe
unsigned long exp = mf&0x7F800000;   // exposant
unsigned long mantisse = mf&0x7FFFFF;
 
Dès lors il est possible d'effectuer des calculs sur les flottants à partir de leur représentation IEEE. Par exemple, élever un flottant à la puissance n :
 
Le flottant est de la forme f = s . 2^(127+e) . 1,m.  
 
A la puissance n, on obtient :
 
f^n = s^n . 2^(127+n*e) . (1,m)^n
 
L'intérêt de la méthode réside en général dans l'accélération des caculs coûteux en cycles, tels que l'inverse (n=-1), la racine carrée (n=1/2) ou l'inverse de la racine carrée (n=-1/2).
 
Pour le signe et l'exposant c'est facile, pour la mantisse moins car il faut toujours se ramener à une représentation normalisée du type 1,m.
 
voili voilou...
j'espère que c'est pas trop confus.

 

[edit]--Message édité par z51--[/edit]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  assembleur : multiplication de 2 nombres dans la norme IEEE

 

Sujets relatifs
assembleur[VC++ ASSEMBLEUR ] questions sur les disques durs
Assembleur : int 21hAssembleur : petit problème avec l'int 21h : fonction 4Bh
intégrer une procédure Assembleur dans un programme CIntégrer une procédure Assembleur dans un programme C
Comparer 3 nombres avec le - de lignes de codeA l'aide, besoin d'un pro de l'assembleur !!!!!
où trouver un compilateur assembleurpetite question sur l'assembleur...
Plus de sujets relatifs à : assembleur : multiplication de 2 nombres dans la norme IEEE


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR