IEEE 754-1985

La norme d'IEEE de pour l'arithmétique à point mobile binaire ( IEEE 754 ) est la norme la plus employée couramment pour le calcul à point mobile du , et est suivie des beaucoup l'unité centrale de traitement et les réalisations du FPU . La norme définit des formats pour représenter des nombres à point mobile (négatif y compris zéro et nombres de Denormal de et valeurs spéciales (infinis et NaNs ainsi qu'un ensemble d'opérations à point mobile de qui opèrent ces valeurs. Elle spécifie également quatre modes d'arrondi et cinq exceptions (comprenant quand les exceptions se produisent, et ce qui se produit quand elles se produisent).

IEEE 754 spécifie quatre formats pour représenter des valeurs à point mobile : précision à double précision (64-bit) et simple-prolongée de simple-précision (à 32 bits), (bit de ≥ 43, non utilisés généralement) et précision double-prolongée (bit de ≥ 79, habituellement mis en application avec 80 bits). Seulement des valeurs à 32 bits sont exigées par la norme ; les autres sont facultatifs. Beaucoup de langues spécifient que des formats et l'arithmétique d'IEEE soient mis en application, bien que parfois elle soit facultative. Par exemple, le langage de programmation du C , qui a antidaté IEEE 754, maintenant permet mais n'exige pas l'arithmétique d'IEEE (le C float typiquement est employé pour la simple-précision d'IEEE et double emploie IEEE à double précision).

Le plein titre de la norme est norme d'IEEE de pour l'arithmétique à point mobile binaire (ANSI/IEEE DST 754-1985) , et on le connaît également en tant que 60559:1989 du CEI de , arithmétique à point mobile binaire pour les systèmes de microprocesseur (à l'origine le numéro de référence était 559:1989 du CEI). Il y avait plus tard un IEEE 854-1987 pour le " ; " indépendant de virgule flottante de base ; tant que la radix est 2 ou 10.

Anatomie d'un nombre à point mobile

Être suit une description du format standard pour des nombres à point mobile.

Conventions de peu utilisées en cet article

Le peu dans un mot de la largeur W est indexé par les nombres entiers dans la gamme 0 à W&minus ; 1 inclus. Le peu avec l'index 0 est dessiné du côté droit. Le plus bas peu répertorié est habituellement le lsb (moindre peu significatif, celui qui si changé causerait la plus petite variation de la valeur représentée).

Disposition générale

Des nombres à point mobile binaires sont stockés sous une forme de la signe-grandeur où le la plupart de peu significatif est le peu de signe , l'exposant de est par l'exposant de partial ", et de ; fraction" ; est le Significand sans le la plupart de peu significatif .

Polariser d'exposant

L'exposant est polarisé par 2 le e −1−1. Voir également l'excès '' N '' . Polariser est fait parce que les exposants doivent être les valeurs signées par afin de pouvoir représenter des valeurs minuscules et énormes, mais le complément , la représentation habituelle du deux pour des valeurs signées, rendrait la comparaison plus dure. Pour résoudre ceci l'exposant est décentré avant d'être stocké, en ajustant sa valeur pour la mettre dans une marge non signée appropriée à la comparaison.

Par exemple, pour représenter un nombre qui a l'exposant de 17, l'exposant de est 17 + 2 le arrogant e du e −1−1. = 8, l'exposant est égal 17 + 128 au − 1 = 144.

Cas

Le peu le plus significatif du Significand (non stocké) est déterminé par la valeur de l'exposant de . Si le < 2^ {e} - 1 de l'exposant 0 <, le peu le plus significatif du significand de est 1, et le nombre serait normalisé par . Si l'exposant de est 0, le peu le plus significatif du significand de est 0 et le nombre serait le De-normal. Trois cas spéciaux se présentent : si l'exposant de est 0 et la fraction de est 0, le nombre est (selon le peu de signe) le

  • ±0 si l'exposant de = 2^ {e} - 1 et fraction de est 0, le nombre est l'infini de ± (encore selon le peu de signe), et le
  • si l'exposant de = 2^ {e} - 1 et fraction de n'est pas 0, le nombre étant représenté est pas un nombre (NaN) .

    Ceci peut être récapitulé comme :

    bit de la Simple-précision 32

    Un nombre à point mobile binaire de la simple-précision est stocké dans 32 bits

    L'exposant est polarisé par 2^ {8-1} - 1 = 127 dans ce cas-ci (des exposants dans le &minus de gamme ; 126 à +127 sont représentables. Voir l'explication ci-dessus pour comprendre pourquoi polariser est fait). Un exposant de &minus ; 127 seraient polarisés à la valeur 0 mais ceci est réservé pour coder que la valeur est un nombre ou un zéro denormalized. Un exposant de 128 serait polarisé à la valeur 255 mais ceci n'est réservé pour coder un infini ou pas un nombre (NaN). Voir le diagramme ci-dessus.

    Pour des nombres normalisés, le plus commun, l'exposant de est l'exposant décentré et la fraction de est le Significand sans le peu le plus significatif.

    Le nombre a la valeur v :

    v = × de s ; × 2e ; m

    Là où

    s = +1 (nombres positifs) quand le peu de signe est 0

    s = &minus ; 1 (nombres négatifs) quand le peu de signe est 1

    e = &minus d'Exp ; 127 (en d'autres termes l'exposant est stocké avec 127 additionnés à lui, également appelé " ; partial avec 127" ;)

    m = 1.fraction dans la binaire (c'est-à-dire, le significand est le nombre binaire 1 suivi de l'emplacement de la virgule suivi du peu binaire de la fraction). Par conséquent, 1 ≤ m < 2.

    Dans l'exemple montré ci-dessus, le signe est zéro, l'exposant est &minus ; 3, et le significand est 1.01 (dans la binaire, qui est 1.25 dans la décimale). Le nombre représenté est donc +1.25 × ; 2&minus ; 3, qui est +0.

    Notes : Les nombres de Denormalized sont les mêmes sauf qu'e = &minus ; 126 et m est 0. (e n'est pas &minus ; 127 : La fraction doit être décalée vers la droite par un plus de bit, afin d'inclure le principal peu, qui n'est pas toujours 1 dans ce cas-ci. Ceci est équilibré en incrémentant l'exposant au &minus ; 126 pour le

  • de calcul.) &minus ; 126 est le plus petit exposant pour un
  • normal de nombre Il y a deux zéros, +0 (s est 0) et &minus de ; 0 (s est 1)
  • Il y a deux infinis +∞ (s est 0) et de &minus ; ∞ (s est 1)
  • NaNs peut avoir un signe et une fraction, mais ceux-ci n'ont aucune signification autre que pour des diagnostics ; le premier peu de la fraction est employé souvent pour distinguer la signalisation NaNs de du
  • de NaNs de tranquillité de NaNs et infinis ont tout le 1s dans le domaine d'Exp.
  • Les nombres positifs et négatifs les plus proches de zéro (représenté par la valeur denormalized avec tout le 0s dans le domaine d'Exp et la valeur 1 binaire dans le domaine de fraction) sont
  • : ±2&minus ; 149 ≈ ±1.4012985
  • Les nombres normaux positifs et négatifs les plus proches de zéro (représenté avec la valeur 1 binaire dans le domaine d'Exp et 0 dans le domaine de fraction) sont
  • : ±2&minus ; 126 ≈ ±1.175494351
  • Les nombres négatifs positifs et finis finis le plus loin de zéro (représenté par la valeur avec 254 dans le domaine d'Exp et tout le 1s dans le domaine de fraction) sont
  • : ≈ 2128) ±3.4028235 de ± ((1 (1/2) 24)

    Voici le tableau synoptique de la section précédente avec quelques exemples à 32 bits de simple-précision d'exemple :

    Un exemple plus complexe

    Codons le &minus de nombre décimal ; 118.625 using le système d'IEEE 754.

    d'abord que nous devons obtenir le signe, l'exposant et la fraction. Puisque c'est un nombre négatif, le signe est " ; 1" ;.

  • Maintenant, nous écrivons le nombre (sans signe ; c. non signé, aucun complément de deux) using la numération binaire . Le résultat est 1110110. Nous obtenons les 101 après la décimale comme ceci : 0.25 qui des moyens nous écrivons 1 après décimale et nous déplaçons sur le
  • 0.5 qui des moyens nous écrivons 0 après la décimale et nous déplaçons sur le
  • 0.00 qui des moyens nous écrivons 1 après que la décimale et nous soient également finis puisque nous ne faisons laisser aucun résidu pour travailler avec le
  • de Après, déplaçons à gauche l'emplacement de la virgule, en laissant seulement un 1 à sa gauche : 1110110.110110101 × ; 26. C'est un nombre normal de virgule flottante. Le 1 premier élément binaire est abandonné. La fraction est la pièce à la droite de l'emplacement de la virgule, remplie de 0 du côté droit jusqu'à ce que nous obtenions chacun des 23 bits. le
  • 11011010100000000000000 L'exposant est 6, mais nous devons convertir lui en binaire et polarisation il (ainsi l'exposant le plus négatif est 0, et tous les exposants sont des nombres binaire non négatifs). Pour le format à 32 bits d'IEEE 754, la polarisation est 127 et tellement 6 + 127 = 133. Dans la binaire, ceci est écrit en tant que 10000101.

    < ! --La polarisation est +127 - je ne sais pas où mettre cela maintenant-->

    Bit 64 à double précision < ! -- Cette section est liée des algorithmes de pour le désaccord calculateur -->

    Le à double précision est essentiellement identique sauf que les champs sont plus larges :

    La pièce de fraction est beaucoup plus grande, alors que l'exposant est seulement légèrement plus grand. Les créateurs standard ont cru que la précision est plus importante que la gamme.

    NaNs et infinis sont représentés avec l'Exp étant tout le 1s (2047). Si la pièce de fraction est chacun des zéro puis c'est infini, d'autre il est NaN.

    Pour des nombres normaux la polarisation d'exposant est +1023 (ainsi e est l'exposant (&minus ; 1023)). Pour des nombres de Denormalized l'exposant est (&minus ; 1022) (l'exposant minimum pour un number&mdash normal ; il n'est pas (&minus ; 1023) parce que les nombres normalisés ont un 1 chiffre principal avant la virgule binaire et les nombres denormalized ne font pas). Comme avant, l'infini et zéro sont signés.

    Notes : Les nombres positifs et négatifs les plus proches de zéro (représenté par la valeur denormalized avec tout le 0s dans le domaine d'Exp et la valeur 1 binaire dans le domaine de fraction) sont

  • : ±2&minus ; 1074 ≈ ±5
  • Les nombres normaux positifs et négatifs les plus proches de zéro (représenté avec la valeur 1 binaire dans le domaine d'Exp et 0 dans le domaine de fraction) sont
  • : ±2&minus ; 1022 ≈ ±2.2250738585072020
  • Les nombres négatifs positifs et finis finis le plus loin de zéro (représenté par la valeur avec 2046 dans le domaine d'Exp et tout le 1s dans le domaine de fraction) sont
  • : ± ((1 (1/2) 53) 21024)

    Fonctions et attributs recommandés

    Sous quelques compilateurs C, copysign (x, y) renvoie x avec le signe de y, ainsi ABS (x) égale le copysign (x, 1. C'est l'une des quelques opérations qui opère NaN dans une arithmétique de ressemblance de manière. Le copysign de fonction est nouveau dans la norme C99.
    &minus ; les retours X X avec le signe se sont inversés. C'est différent de 0&minus ; X dans certains cas, notamment quand x est 0. Ainsi &minus ; (0) est le &minus ; 0, mais le signe de 0&minus ; 0 dépend du mode d'arrondi.
    scalb (y, N)
    logb (x)
    fini (x) un attribut pour le " ; X est un value" fini ; , équivalent au &minus ; FNI < x < FNI
    isnan (x) un attribut pour le " ; X est un nan" ; , équivalent au " ; x" du ≠ X ;
    X <> y qui s'avère avoir le comportement différent d'exception que PAS (x = y).
    non commandé (x, y) est vrai quand " ; X est non commandé avec le y" ; , c.
    classe (x)
    nextafter (x, y) renvoie la prochaine valeur représentable de x dans la direction vers y
  • .

    Random links:Liste de leaders d'État en 1760 | Tête de la navigation | Drapeau de Gadsden | Hé ce qui est erroné avec celui-ci ? | IEEE_754-1985