186 votes

Quelle est la différence entre une opération à virgule flottante simple et double précision?

Je me demandais quelle était la différence entre une simple précision à virgule flottante fonctionnement et double précision flottante opération.

Je suis surtout intéressé par la pratique par rapport aux consoles de jeux vidéo, par exemple la Nintendo 64 ont un processeur 64 bits et si c'est le cas alors que cela signifierait qu'il était capable de double précision d'opérations en virgule flottante? Peut la ps3 et la Xbox 360 retirer en virgule flottante double précision d'opérations ou d'une seule de précision et, en général, l'usage est le double de la précision des capacités d'utilisation de l' (si ils existent?).

Merci pour toute aide!

225voto

VonC Points 414372

Remarque: la Nintendo 64 n'ont d'un processeur 64 bits, cependant:

De nombreux jeux ont pris l'avantage de la puce 32 bits mode de traitement la plus grande précision des données disponibles avec la version 64 bits de types de données n'est généralement pas requis par les jeux 3D, ainsi que le fait que le traitement de données 64 bits utilise deux fois plus de RAM, cache, et la bande passante, réduisant ainsi les performances globales du système.

De Webopedia:

Le terme de double précision est quelque chose de mal choisi parce que la précision n'est pas vraiment le double.
Le mot double) provient du fait qu'un nombre double précision utilise deux fois plus de bits que régulière d'un nombre à virgule flottante.
Par exemple, si un seul nombre en précision nécessite 32 bits, sa double précision homologue 64 bits.

L'extra augmenter non seulement la précision, mais aussi la gamme de grandeurs qui peuvent être représentés.
Le montant exact par lequel la précision et la gamme de grandeurs sont augmentés dépend de ce format du programme est d'utiliser pour représenter les valeurs à virgule flottante.
La plupart des ordinateurs utilisent un format standard connu comme la virgule flottante IEEE de format.

À partir de la norme IEEE pour l'arithmétique à virgule flottante

Simple Précision

La norme IEEE simple précision à virgule flottante représentation standard nécessite un 32 bits word, qui peut être représenté comme numérotés de 0 à 31, de gauche à droite.

  • Le premier bit est le signe bits, S,
  • les huit bits de l' exposant bits, 'E', et
  • la finale des 23 bits de la fraction 'F':

    S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF
    0 1      8 9                    31
    

La valeur V représentée par le mot peut être déterminé comme suit:

  • Si E=255 et F est différent de zéro, alors V=NaN ("not a number")
  • Si E=255 et F est égal à zéro et S est 1, alors V=-l'Infini
  • Si E=255 et F est égal à zéro et S est égal à 0, alors V=Infini
  • Si 0<E<255 alors V=(-1)**S * 2 ** (E-127) * (1.F) où "1.F" est destiné à représenter le nombre binaire créé par la préfixation de F avec une implicite leader 1 et un binaire point.
  • Si E=0 et F est différent de zéro, alors V=(-1)**S * 2 ** (-126) * (0.F). Ces sont "unnormalized" valeurs".
  • Si E=0 et F est égal à zéro et S est 1, alors V=-0
  • Si E=0 et F est égal à zéro et S est égal à 0, alors V=0

En particulier,

0 00000000 00000000000000000000000 = 0
1 00000000 00000000000000000000000 = -0

0 11111111 00000000000000000000000 = Infinity
1 11111111 00000000000000000000000 = -Infinity

0 11111111 00000100000000000000000 = NaN
1 11111111 00100010001001010101010 = NaN

0 10000000 00000000000000000000000 = +1 * 2**(128-127) * 1.0 = 2
0 10000001 10100000000000000000000 = +1 * 2**(129-127) * 1.101 = 6.5
1 10000001 10100000000000000000000 = -1 * 2**(129-127) * 1.101 = -6.5

0 00000001 00000000000000000000000 = +1 * 2**(1-127) * 1.0 = 2**(-126)
0 00000000 10000000000000000000000 = +1 * 2**(-126) * 0.1 = 2**(-127) 
0 00000000 00000000000000000000001 = +1 * 2**(-126) * 
                                     0.00000000000000000000001 = 
                                     2**(-149)  (Smallest positive value)

Double Précision

L'IEEE en virgule flottante double précision standard de représentation nécessite un 64 bits d'un mot, qui peut être représenté comme numérotées de 0 à 63, de gauche à droite.

  • Le premier bit est le signe bits, S,
  • les onze bits de l' exposant bits, 'E', et
  • la finale de 52 bits sont la fraction 'F':

    S EEEEEEEEEEE FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    0 1        11 12                                                63
    

La valeur V représentée par le mot peut être déterminé comme suit:

  • Si E=2047 et F est différent de zéro, alors V=NaN ("not a number")
  • Si E=2047 et F est égal à zéro et S est 1, alors V=-l'Infini
  • Si E=2047 et F est égal à zéro et S est égal à 0, alors V=Infini
  • Si 0<E<2047 alors V=(-1)**S * 2 ** (E-1023) * (1.F) où "1.F" est destiné à représenter le nombre binaire créé par la préfixation de F avec une implicite leader 1 et un binaire point.
  • Si E=0 et F est différent de zéro, alors V=(-1)**S * 2 ** (-1022) * (0.F)Ces sont "unnormalized" valeurs".
  • Si E=0 et F est égal à zéro et S est 1, alors V=-0
  • Si E=0 et F est égal à zéro et S est égal à 0, alors V=0

Référence:
La Norme ANSI/IEEE 754-1985,
Standard pour le Binaire Arithmétique à virgule Flottante.

20voto

Charlie Martin Points 62306

D'accord, la différence de base à la machine, c'est que la double précision, utilise deux fois plus de bits que le simple. Dans la mise en oeuvre habituelle,qui est de 32 bits pour 64 bits pour le double.

Mais que faut-il dire? Si nous supposons que la norme IEEE, puis d'un simple précision nombre a sur 23 bits de la mantisse, et un maximum exposant d'environ 38; un double précision a 52 bits pour la mantisse, et un maximum exposant d'environ 308.

Les détails sont sur Wikipédia, comme d'habitude.

7voto

codekaizen Points 14819

Quant à la question "Pouvez la ps3 et xbxo 360 retirer en virgule flottante double précision d'opérations ou d'une seule de précision et dans generel utiliser est le double de la précision des capacités d'utilisation de l' (si ils existent?)."

Je crois que les deux plates-formes sont incapables de la double virgule flottante. La Cellule d'origine du processeur avait seulement 32 bits flotteurs, même avec les ATI, du matériel de la XBox 360 est basée sur (R600). La Cellule a obtenu flottant double point d'appui plus tard, mais je suis sûr que la PS3 n'est pas l'utilisation que chippery.

7voto

cletus Points 276888

Fondamentalement, l'arithmétique en virgule flottante simple précision traite les nombres à virgule flottante 32 bits alors que la double précision traite 64 bits.

Le nombre de bits en double précision augmente la valeur maximale pouvant être stockée, ainsi que la précision (c'est-à-dire le nombre de chiffres significatifs).

-1voto

Xn0vv3r Points 7778

Tout est question de précision ;-)

Hava un coup d'oeil à Wikipedia .

Pour une meilleure compréhension Simple précision et Double précision

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X