Dans la
rubrique précédente, nous avons examiné un nouveau format pour représenter les nombres décimaux à virgule flottante, que nous avons appelé format décimal-binaire mixte (SDDF).
Ce format vous permet d'effectuer des calculs arithmĂ©tiques sur un ordinateur sans utiliser BCD avec la mĂȘme prĂ©cision que si les calculs Ă©taient effectuĂ©s manuellement.
Rappelons qu'un format mixte décimal-binaire (SDDF) est un format de représentation de code binaire pour les nombres décimaux à virgule flottante, dans lequel la mantisse entiÚre est l'équivalent binaire de sa valeur décimale, et l'exposant est l'équivalent binaire de la puissance de 10. Le nombre réel dans SDF est représenté comme
oĂč
et e sont des entiers binaires. L'équivalent binaire d'un nombre décimal est le code binaire de ce nombre décimal dans le format sélectionné. L'équivalent décimal d'un nombre binaire est le code décimal de ce nombre binaire.
Comparons les propriétés de base des nombres à virgule flottante, qui sont présentées dans la norme IEEE754 et SDDF. Pour plus de simplicité, pensez à un mot machine 16 bits. Il s'agit du format dit
demi-prĂ©cision . Les rĂ©sultats de la comparaison peuvent facilement ĂȘtre mis Ă l'Ă©chelle dans le cas d'un format d'Ă©change simple et double prĂ©cision.
Nous divisons le mot binaire 16 bits dans les champs suivants: S, e, m. OĂč est le chiffre S du signe du nombre, e - 5 bits de l'exposant dĂ©placĂ©, m - 10 bits de l'Ă©quivalent binaire de la mantisse dĂ©cimale du nombre. La valeur binaire maximale de l'exposant de dĂ©calage enregistrĂ©e dans le registre Ă 5 bits sera Ă©gale Ă emax = 11111, ou sous forme dĂ©cimale emax = 31. Le dĂ©calage dans ce cas est de 15.
Alors
1 . La mantisse numérique compactée dans IEEE754 contient la partie fractionnaire de la mantisse numérique.
Le nombre de mantisses dans SDDF est un entier binaire.2 . La mantisse IEEE normalisĂ©e sous la forme dĂ©compressĂ©e ressemble Ă 1.xxxxxxxxxx. OĂč x est un chiffre binaire.
La mantisse Ă©tant normalisĂ©e, toute sa partie sous forme dĂ©ballĂ©e est toujours Ă©gale Ă 1. Cette unitĂ© ne peut pas ĂȘtre stockĂ©e dans la mĂ©moire de la machine. Ainsi, sous la forme dĂ©compressĂ©e, en tenant compte de l'unitĂ© virtuelle, la mantisse aura 11 bits.
La mantisse normalisĂ©e dans le SDDF est un entier binaire Ă©gal Ă l'Ă©quivalent du nombre dĂ©cimal, qui dans notre cas est reprĂ©sentĂ© par trois chiffres: UXX. OĂč U est un chiffre dĂ©cimal diffĂ©rent de zĂ©ro. X est n'importe quel chiffre dĂ©cimal.
Un nombre dĂ©cimal maximum de 1023 peut ĂȘtre reprĂ©sentĂ© sur 10 bits de la mantisse. Tous les entiers infĂ©rieurs Ă 1023 peuvent ĂȘtre garantis reprĂ©sentĂ©s par 10 bits. Par consĂ©quent, tous les nombres dĂ©cimaux avec une mantisse †999 peuvent ĂȘtre reprĂ©sentĂ©s exactement par 10 bits de la mantisse.3 . Dans IEEE754, la mantisse binaire normalisĂ©e maximale est Mmax = 1.1111111111 = 1.9990234375
Le nombre garanti de chiffres valides pouvant ĂȘtre reprĂ©sentĂ©s par une mantisse binaire de 11 bits
est de 3 .
La mantisse décimale normalisée maximale dans SDDF est Mmax = 999 ou Mmax binaire = 1 111 100 111. L'équivalent décimal de la mantisse se compose de 3 chiffres décimaux. Par conséquent, la mantisse à trois chiffres de notre exemple est représentée avec précision dans SDDF 3 en chiffres décimaux significatifs.4 . Dans IEEE754, la valeur minimale de mantisse normalisée, avec emin = 0, sera: Mmin = 1,0
La mantisse normalisĂ©e minimale dans SDDF, Ă emin = 0, est Ă©gale au nombre dĂ©cimal Mmin = 100. Ou sous forme binaire Mmin = 0001100100.5 . Le nombre dĂ©cimal positif maximum qui peut ĂȘtre Ă©crit au format IEEE754 avec un exposant biaisĂ© sera
Fmax = 2 ^ emax * Mmax = 2 ^ 31 * 1.9990234375 = 4292870144 = 4,292870144 * 10 ^ 9. Cependant, dans la norme, le nombre maximal est le nombre Fmax = 2 ^ emax = 2 ^ 31 = 4294967296 = 4,294967296 * 10 ^ 8. Les nombres> 2 ^ 31 sont considérés comme égaux plus l'infini.
Le nombre dĂ©cimal positif maximum qui peut ĂȘtre Ă©crit avec prĂ©cision au format SDDF avec un exposant biaisĂ© sera
Fmax = 10 ^ emax * Mmax = 10 ^ 31 * 999 = 9,99 * 10 ^ 336 . La plage des nombres normalisĂ©s approximatifs qui peuvent ĂȘtre reprĂ©sentĂ©s au format IEEE sera
Fmax / Fmin = 2 ^ 31 = 4294967296 = 4,294967296 * 10 ^ 8
La plage de nombres exacts qui peuvent ĂȘtre reprĂ©sentĂ©s au format SDDF sera Ă©gale Ă
Fmax / Fmin = 9,99 * 10 ^ 317 . L'étape de modification du nombre binaire dans IEEE avec un exposant de décalage (emin = 0) est:
h = 0,000000000001 = 2 ^ -10 = 0,0009765625
L'étape de modification du nombre décimal dans le SDDF avec un exposant décalé (emin = 0) est:
h = 00001100100 = 1008 . Dans IEEE754, avec un exposant biaisé, si e = 0, alors tous les nombres <1,0 sont sous-normaux. Plus le nombre sous-normal est petit, moins il représente avec précision son équivalent décimal. Des algorithmes spéciaux sont nécessaires pour coder les nombres sous-normaux dans un format d'échange, décodage à partir d'un format d'échange, ainsi que des piÚges spéciaux pour déterminer les nombres sous-normaux pendant les opérations arithmétiques.
Il n'y a pas de nombres sous-normaux dans SDDF. Tous les nombres sont reprĂ©sentĂ©s avec une prĂ©cision, dans notre cas, jusqu'Ă 3 chiffres significatifs.9 . Avec un exposant non biaisĂ©, le nombre dĂ©cimal positif normalisĂ© maximum qui peut ĂȘtre Ă©crit au format IEEE754 sera
Fmax = 2 ^ emax * Mmax = 2 ^ 15 * 1,9990234375 = 65504. Cependant, dans la norme, le nombre maximum est le nombre Fmax = 2 ^ emax = 2 ^ 15 = 32768. Les nombres> 32768 sont considérés comme égaux plus l'infini.
Avec un exposant non biaisĂ©, le nombre dĂ©cimal positif maximum qui peut ĂȘtre Ă©crit dans le SDDF sera Ă©gal Ă
Fmax = 10 ^ emax * Mmax = 999 * 10 ^ 15 = 9,99 * 10 ^ 1710 . Avec un exposant non biaisé, le nombre décimal positif normalisé minimum au format IEEE754 sera Fmin = 1,0 * 2 ^ -15 =
3.0517578125 * 10 ^ -5.
Avec un exposant non biaisĂ©, le nombre dĂ©cimal positif normalisĂ© minimum qui peut ĂȘtre Ă©crit au format SDDF sera Fmin = 100 * 10 ^ -15 = 10 ^ -1311 . Avec un exposant non biaisĂ©, le pas dĂ©cimal Ă©quivalent binaire minimum dans IEEE est:
h = 0,000000000001 * 2 ^ -15 = 2 ^ -25 = 3,0517578125 * 10 ^ -5
Avec un exposant non biaisé, le pas minimum dans le SDDF coïncide avec le nombre minimum et est égal à :
h = 001100100 * 10 ^ -15 = 10 ^ -1312 . Dans IEEE754, la fonction de la dĂ©pendance de la valeur de l'Ă©quivalent dĂ©cimal du nombre Fd sur sa valeur binaire n'est pas uniforme, car pour changer de 1 le chiffre le moins significatif de la mantisse dĂ©cimale du nombre, en rĂšgle gĂ©nĂ©rale, la somme de plusieurs h Ă©gale Ă la machine Æ est nĂ©cessaire.
Ainsi, par exemple, si e = 0, pour Fd1 = 1.0 = 1.0000000000 et Fd2 = 1.1â1.0001100110, nous aurons
Fd2- Fd1 = 1.0001100110 -1.0000000000 = 0.0001100110 = 0.099609375
0,0001100110 / h = 0,0001100110 / 0,0000000001 = 1100110 = 102 = Æ
Dans SDDF, la fonction de la dĂ©pendance de la valeur de l'Ă©quivalent dĂ©cimal du nombre Fd sur sa valeur binaire est uniforme. Tout changement de h de l'Ă©quivalent binaire de la mantisse du nombre dĂ©cimal entraĂźne un changement du 1 bit le moins significatif de l'Ă©quivalent dĂ©cimal du nombre. Ici machine Æ = 1. Vraiment.
Si e = 0,
Fd1 = 100 = 0001100100
Fd2 = 200 = 0011001000
Fd2- Fd1 = 0011001000-0001100100 = 0001100100 = 100 = hEn conclusion, nous présentons les principales caractéristiques de la représentation des nombres réels dans la norme IEEE754 et SDDF pour le format d'échange, composé de 32 bits (simple précision dans la norme IEEE754).
Pour IEEE754, les bits de mot machine simple précision sont alloués en tant que S - 1 bit du code de signe, e - 8 bits de l'exposant biaisé, m - 23 bits de mantisse explicites. Déballé, m = 24.
Pour IEEE754:Le coefficient de déplacement exponentiel est 127 emax = 127. L'ordre sans biais du plus petit nombre normalisé avec M = 1,0 est p = e-127 + 1 = -126. Les nombres <2 ^ -126 sont considérés comme inférieurs à la normale.
Le nombre normalisé minimum est Fmin = 1,0 * 2 ^ -126 = 1,1754943508222875079687365372222e-38
Le nombre normalisé maximum
Fmax = 2 ^ 127 = 1,7014118346046923173168730371588e + 38
Les nombres qui dépassent 2 ^ 127 sont considérés comme l'infini positif.
Pour SDDF, les chiffres du mot machine sont répartis comme suit: S - 1 chiffre, e - 7 bits, m - 24 bits. Le coefficient de déplacement exponentiel est de 63. Alors
emax = 64
Mmax = 9999999
Fmax = 9999999 * 10 ^ 64 = 9,999999 * 10 ^ 70
Fmin = 1 000 000 * 10 ^ -63 = 10 ^ -57
La précision de la représentation des nombres décimaux réels est de 7 chiffres décimaux significatifs.