Section courante

A propos

Section administrative du site

Types de données SANE

Le SANE fournit trois types d'application (Single, Double et Comp) et le type arithmétique (Extended). Les valeurs à virgule flottante d'entreposage Single, Double et Extended, et Comp entrepose les valeurs intégrales.

Le type Extended est appelé type arithmétique car, pour rendre l'évaluation des expressions plus simple et plus précise, SANE effectue toutes les opérations arithmétiques avec une précision étendue et fournit des résultats arithmétiques au type Extended. Les types d'application Single, Double et Comp peuvent être considérés comme des types d'entreposage peu encombrants pour l'arithmétique à précision étendue. (Ce manuel utilise le terme précision étendue pour désigner à la fois la précision étendue et l'intervalle étendue du type Extended.)

La norme IEEE donne des spécifications exactes pour les types Single et Double, mais pour le type étendu, ne spécifie que des limites inférieures pour la précision et la plage des exposants. Les implémentations SANE prises en charge par la virgule flottante matérielle peuvent adopter le format étendu du matériel, pouvant différer du format 80 bits décrit ici. Vous devez entreposer les données externes dans l'un des types d'application plutôt que dans le type étendu, non seulement par souci d'économie mais aussi parce que le format étendu peut varier selon les différentes implémentations de l'arithmétique IEEE.

Toutes les valeurs représentables en Single, Double et Comp (ainsi que les entiers 16 bits et 32 bits) peuvent être représentées exactement en étendu. Ainsi, les valeurs peuvent être déplacées de n'importe lequel de ces types vers le type étendu et inversement sans aucune perte d'informations.

Choisir un type de données

Généralement, choisir un type de données nécessite que vous déterminiez les compromis entre :

La précision, l'intervalle et l'utilisation de la mémoire pour chaque type de données SANE sont présentées dans un tableau plus loin. Les effets des types de données sur les performances (vitesse) sont différents pour différentes implémentations de SANE.

La plupart des applications de comptabilité nécessitent un type de comptage comptant les choses (penny, dollars, widgets) exactement. Les applications comptables peuvent être mises en oeuvre en représentant les valeurs monétaires sous forme de nombres entiers de cents ou de millier, pouvant être entreposés exactement dans le format d'entreposage de type Comp (pour calcul). La somme, la différence ou le produit de deux valeurs Comp est exact si l'amplitude du résultat ne dépasse pas 263-1 (c'est-à-dire 9 223 372 036 854 775 807). Ce nombre est supérieur à la dette nationale des États-Unis exprimée en milliards. De plus, les valeurs Comp (telles que les résultats des calculs comptables) peuvent être mélangées avec des valeurs étendues dans les calculs en virgule flottante (telles que les intérêts composés).

L'arithmétique avec des variables de type Comp, comme toute l'arithmétique SANE, est effectuée en interne à l'aide de l'arithmétique à précision étendue. Il n'y a pas de perte de précision, car la conversion de Comp à Extended est toujours exacte. L'espace peut être économisé en entreposant les nombres au format Comp, étant 20 % plus court que le format étendu 80 bits. Les applications non comptables seront normalement mieux servies par les formats de données à virgule flottante.

Remarque sur le langage : dans SANE Pascal et SANE C, les constantes à virgule flottante sont entreposées au format Extended.

Type SANE Type Pascal
IEEE single Real
IEEE double Double
SANE comp Comp
IEEE extended Extended

Valeurs représentées

Les formats d'entreposage en virgule flottante (Single, Double et Extended) fournissent des codages binaires d'un signe (+ ou -), d'un exposant et d'un significand. Un nombre représenté vaut :

±significandx 2exponent

où le significand a un seul bit à gauche du point binaire (c'est-à-dire 0 s; significand < 2).

Remarque : Cette définition s'applique aux nombres normalisés et dénormalisés.

Portée et précision des types SANE

Le tableau suivant décrit l'intervalle et la précision des types de données numériques pris en charge par SANE. Les intervalles décimales sont exprimées sous forme de représentations décimales à deux chiffres hachées des valeurs binaires exactes :

  Types de données d'application Type de données arithmétique
  Single Double Comp Extended
Taille (octets : blts) 4:32 8:64 8:64 10:80
Intervalle d'exposants binaires
 Minimum
 Maximum

-126
127

-1022
1023

--
--

-16383
16383
Signification et précision
 Bits
 Chiffres décimaux

24
7-8

53
15-16

63
18-19

64
19-20
Intervalle décimale (approximative)
Minimum négatif
Norme négative maximale
Dénormité négative maximale

Dénormité positive minimale
Norme positive minimale
Positif maximal

3.4E+38
1.2E-38
1.5E-45

-1.5E-45
-1.2E-38
-3.4E+38

1. 7E+308
2.3E-308
5.0E-324

-5.0E-324
-2.3E-308
-1.7E-4932

≈-9.2E18





≈-9.2E18

1.1E+4932
1.7E-4932
1.9E-4951

-1.9E-4951
-1.7E+308
-1.1E+4932
Infinis Oui Oui Non Oui
NaN Oui Oui Oui Oui

Dans la mesure du possible, SANE entrepose les résultats sous une forme numérique normalisée, où le bit de poids fort dans le significande est 1 (c'est-à-dire 1 ~ significande < 2). Garder les nombres normalisés assure l'unicité de la représentation et offre une précision maximale pour une largeur de significande donnée.

Exemple : Intervalle de Single

En format simple, le plus grand nombre représentable est composé comme suit :

significand = 2-2-23
= 1.111111111111111111111112
exposent = 127
valeur = (2-2-23) x 2127
≈ 3.403 x 1038

Le plus petit nombre normalisé positif représentable dans un format unique est composé comme suit :

significand = 1
= 1.000000000000000000000002
exposent -126
valeur = 1 x 2-126
≈ 1.175 x 10-38

Pour les nombres dénormalisés, la plus petite valeur positive représentable en simple est composée comme suit :

significand = 2-23
= 0.000000000000000000000012
exposent -126
valeur = 2-23 x 2-126
≈ 1.401 x 10-45

Formats

Cette section présente les formats des quatre types de données numériques SANE. Ce sont des représentations graphiques et peuvent ne pas refléter l'ordre réel des octets dans une implémentation particulière.

Chacun des schémas des pages suivantes est suivi d'un tableau donnant les règles d'évaluation du nombre. Dans chaque champ de chaque diagramme, le bit le plus à gauche est le msb (bit le plus significatif) et le plus à droite est le lsb (bit le moins significatif). Les symboles utilisés dans les schémas sont définis dans le tableau suivant :

Symbole Description
v Valeur du nombre
s Signe un bit
e Exposant biaisé
i Un bit explicite (type étendu uniquement)
f Fraction
d Bits non signés (type Comp uniquement)

Single

Le format Single 32 bits est divisé en trois champs, comme illustré dans l'image suivante :

La valeur v du nombre est déterminée par ces champs, comme indiqué dans le tableau suivant :

Exposant biaisé e Fraction f Valeur v Classe de v
0 < e < 255 (n'importe quel) v = (-1)S x 2(e- 127) X (1,f) Normalisé
e=0 f ≠ 0 v= (-1)S x 2(-126) x (0,f) Dénormalisé
e=0 f=0 v= (-1)S x0 Zéro
e=255 f≠0 v=(-1)S x Infini Infini
e=255 f≠0 v est un NaN NaN

Double

Le format double 64 bits est divisé en trois champs, comme illustré dans l'image suivante :

La valeur v du nombre est déterminée par ces champs comme indiqué dans le tableau suivant :

Exposant biaisé e Fraction f Valeur v Classe de v
0 < e < 2047 (n'importe quel) v = (-1)S x 2(e-1023) x (1,f) Normalisé
e=0 f ≠ 0 v= (-1)Sx 2(-1022)x(0,f) Dénormalisé
e=0 f=0 v=(-1)S x 0 Zéro
e=2047 f=0 v=(-1)S x Infini Infini
e=2047 f ≠ 0 v est un NaN NaN

Comp

Le format Comp de 64 bits est divisé en deux champs, comme illustré dans l'image suivante :

La valeur v du nombre est déterminée par ces champs comme indiqué dans le tableau suivant :

Bits de signe Bits non signés d Valeur v
s=1 d=0 v est l'unique NaN de Comp.
s=1 d≠0 v est la valeur du complément à deux de la représentation 64 bits.
s=0 (n'importe quel) v est la valeur du complément à deux de la représentation 64 bits.

Extended

Les paquets logiciels SANE utilisent un format étendu 80 bits. Le format étendu 80 bits est composé de quatre champs, comme illustré dans l'image suivante :

Le coprocesseur à virgule flottante MC68881 utilise un format étendu 96 bits composé de cinq champs, comme illustré dans le tableau suivant. (Le format 96 bits est utilisé car le MC68020 accède plus efficacement aux données sur les limites des mots longs.) Notez que les champs s, e, i et f au format 96 bits sont les mêmes que ceux au format 80 bits ; le champ grisé n'est pas utilisé :

Le tableau suivant montre comment la valeur v du nombre est déterminée par les champs illustrés dans les 2 figures précédente :

Exposant biaisé e Entier I Fraction f Valeur v Classe de v
0 ≤ e ≤ 32766 1 (n'importe quel) v =(-1)S x 2(e-16383) x (1,f) Normalisé
0 ≤ e ≤ 32766 0 f ≠ 0 v= (-1)Sx 2(e-16383) x (0,f) Dénormalisé
0 ≤ e ≤ 32766 0 f = 0 v=(-1)S x 0 Zéro
e=32767 (n'importe quel) f=0 v=(- 1)Sx Infini Infini
e=32767 (n'importe quel) f ≠ 0 v est un NaN NaN


Dernière mise à jour : Mercredi, le 8 février 2023