You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Richard Tremblay et Djamal Rebaïnesystèmes <strong>de</strong> numérationExemple : Supposons que l'on veuille faire l'addition <strong>de</strong>s nombres 0.100110 * 2 4 et 0.110101 *2 1 . Il faut en premier lieu rendre les exposants égaux. On réalise cela en décalant <strong>de</strong> 3 positionsbinaires le point décimal du <strong>de</strong>uxième nombre pour obtenir ainsi 0.000110101 * 2 4 . Décaler d'uneposition vers la droite le point décimal revient à diviser la mantisse par 2. Pour conserver lavaleur du nombre, à chaque décalage d'une position, on ajoute 1 à l'exposant. Aussi, 3 décalagesvers la droite sont compensés par l'addition <strong>de</strong> 3 à l'exposant. Cependant, la mantisse étantétendue sur 6 bits vers la droite, les bits dépassant la 6ième position seront ignorés. Le <strong>de</strong>uxièmenombre que la machine considèrera pour l'addition <strong>de</strong>viendra 0.000110 * 2 4 si on tronque ou0.000111 * 2 4 si on arrondit, cela dépendant du fabricant <strong>de</strong> la machine. Par la suite, l'addition<strong>de</strong>s <strong>de</strong>ux mantisses se fera donnant comme résultat soit avec la mantisse tronquée:0.100110 (*2 4 )+ 0.000110 (*2 4 )0.101100 (*2 4 )ouavec la mantisse arrondie:0.100110 (*2 4 )+ 0.000111 (*2 4 )0.101101 (*2 4 )On réalise ici que le résultat d'une addition peut être très imprécis en virgule flottante. En termesclairs, l'addition <strong>de</strong>mandée en décimale était35/2 + 117/64 qui <strong>de</strong>vrait donner comme résultat 1237/64 ou 19+21/64 19.32815.Les résultats obtenus sont:avec la mantisse tronquée: 35/2 + 3/2 = 19avec la mantisse arrondie: 35/2 + 7/4 = 77/4 = 19.25.L'erreur commise est dans le premier cas <strong>de</strong> 0.32815 et dans le second <strong>de</strong> 0.07815 . Cette erreurest d'autant plus importante que la différence entre les exposants est gran<strong>de</strong>. Notons que l'erreurcommise est moins gran<strong>de</strong> pour l'arrondi que pour la troncature.En analyse numérique, on démontre que pour la somme <strong>de</strong> n nombres, la précision est plusgran<strong>de</strong> si on ordonne d'abord les nombres en ordre croissant pour les additionner l'un après l'autreen partant du plus petit au plus grand. Cet algorithme réduit au minimum la différence entre lesexposants à chaque addition successive <strong>de</strong> <strong>de</strong>ux nombres . Donnons un autre exemple encore plusfrappant démontrant que l'addition en virgule flottante n'est pas très précise dans les cas où lesexposants sont très différents.Effectuons l'addition <strong>de</strong>s <strong>de</strong>ux nombres suivants exprimés sur cinq bits:0.10110 * 2 3 + 0.10011 * 2 -2 . On ramène les exposants égaux, c'est-à-dire le plus petit vers le plusgrand, ce qui donne :66