Quelle est la différence entre une opération à virgule flottante simple précision et une opération flottante double précision?
Je suis particulièrement intéressé par les termes pratiques liés aux consoles de jeux vidéo. Par exemple, la Nintendo 64 a-t-elle un processeur 64 bits et si c'est le cas, cela signifierait-il qu'elle était capable d'opérations en virgule flottante à double précision? La PS3 et la Xbox 360 peuvent-elles effectuer des opérations en virgule flottante en double précision ou en simple précision et, en général, les capacités de double précision sont-elles utilisées (si elles existent?).
floating-point
precision
processor
operations
tweetypi
la source
la source
Réponses:
Remarque: la Nintendo 64 dispose d'un processeur 64 bits, cependant:
De Webopedia :
Le format IEEE double précision a en fait plus de deux fois plus de bits de précision que le format simple précision, ainsi qu'une plage beaucoup plus grande.
De la norme IEEE pour l'arithmétique à virgule flottante
Précision unique
La représentation standard à virgule flottante simple précision IEEE nécessite un mot de 32 bits, qui peut être représenté comme numéroté de 0 à 31, de gauche à droite.
les 23 derniers bits sont la fraction 'F':
La valeur V représentée par le mot peut être déterminée comme suit:
0<E<255
alorsV=(-1)**S * 2 ** (E-127) * (1.F)
où "1.F" est destiné à représenter le nombre binaire créé en préfixant F avec un 1 implicite et un point binaire.V=(-1)**S * 2 ** (-126) * (0.F)
. Ce sont des valeurs «non normalisées».En particulier,
Double precision
La représentation standard à virgule flottante double précision IEEE nécessite un mot de 64 bits, qui peut être représenté comme numéroté de 0 à 63, de gauche à droite.
les 52 derniers bits sont la fraction 'F':
La valeur V représentée par le mot peut être déterminée comme suit:
0<E<2047
alorsV=(-1)**S * 2 ** (E-1023) * (1.F)
où "1.F" est destiné à représenter le nombre binaire créé en préfixant F avec un 1 implicite et un point binaire.V=(-1)**S * 2 ** (-1022) * (0.F)
ce sont des valeurs "non normalisées".Référence:
Norme ANSI / IEEE 754-1985,
Norme pour l'arithmétique binaire à virgule flottante.
la source
**
' est ExponentiationJ'ai lu beaucoup de réponses mais aucune ne semble expliquer correctement d'où vient le mot double . Je me souviens d'une très bonne explication donnée par un professeur d'université que j'avais il y a quelques années.
Rappelant le style de la réponse de VonC, un représentation à virgule flottante simple précision utilise un mot de 32 bits.
Représentation:
(Juste pour souligner, le bit de signe est le dernier, pas le premier.)
Une représentation à virgule flottante double précision utilise un mot de 64 bits.
Représentation:
Comme vous le remarquerez peut-être, j'ai écrit que la mantisse a, dans les deux types, un peu plus d'informations par rapport à sa représentation. En fait, la mantisse est un nombre représenté sans tout son non significatif
0
. Par exemple,Cela signifie que la mantisse sera toujours sous la forme
0.α 1 α 2 ... α t × β p
où β est la base de la représentation. Mais comme la fraction est un nombre binaire, α 1 sera toujours égal à 1, donc la fraction peut être réécrite comme 1.α 2 α 3 ... α t + 1 × 2 p et le 1 initial peut être implicitement supposé, faire de la place pour un bit supplémentaire (α t + 1 ).
Maintenant, il est évidemment vrai que le double de 32 est 64, mais ce n'est pas de là que vient le mot.
La précision indique le nombre de chiffres décimaux corrects , c'est-à-dire sans aucune sorte d'erreur de représentation ou d'approximation. En d'autres termes, il indique le nombre de chiffres décimaux pouvant être utilisés en toute sécurité .
Cela dit, il est facile d'estimer le nombre de chiffres décimaux pouvant être utilisés en toute sécurité:
la source
D'accord, la différence fondamentale au niveau de la machine est que la double précision utilise deux fois plus de bits qu'une simple. Dans l'implémentation habituelle, c'est 32 bits pour simple, 64 bits pour double.
Mais qu'est-ce que ça veut dire ? Si nous supposons la norme IEEE, alors un nombre de précision unique a environ 23 bits de la mantisse, et un exposant maximum d'environ 38; une double précision a 52 bits pour la mantisse, et un exposant maximum d'environ 308.
Les détails sont sur Wikipedia , comme d'habitude.
la source
Pour ajouter à toutes les merveilleuses réponses ici
Tout d'abord, float et double sont tous deux utilisés pour la représentation des nombres fractionnaires. Ainsi, la différence entre les deux provient du fait avec quelle précision ils peuvent stocker les nombres.
Donc, fondamentalement, nous voulons savoir à quel point le nombre peut être stocké avec précision et c'est ce que nous appelons la précision.
Citant @Alessandro ici
Float peut stocker avec précision environ 7 à 8 chiffres dans la partie fractionnaire tandis que Double peut stocker avec précision environ 15 à 16 chiffres dans la partie fractionnaire
Ainsi, float peut stocker le double de la quantité de partie fractionnaire. C'est pourquoi Double s'appelle le double du flotteur
la source
Quant à la question "La ps3 et la xbxo 360 peuvent-elles effectuer des opérations en virgule flottante en double précision ou seulement en simple précision et en général, les capacités de double précision sont-elles utilisées (si elles existent?)."
Je crois que les deux plates-formes sont incapables de doubler la virgule flottante. Le processeur Cell d'origine n'avait que des flotteurs de 32 bits, de même que le matériel ATI sur lequel la XBox 360 est basée (R600). La Cellule a plus tard pris en charge le double virgule flottante, mais je suis presque sûr que la PS3 n'utilise pas cette puce.
la source
Fondamentalement, l' arithmétique à virgule flottante à simple précision traite des nombres à virgule flottante de 32 bits alors que la double précision traite de 64 bits.
Le nombre de bits en double précision augmente la valeur maximale qui peut être stockée ainsi que la précision (c'est-à-dire le nombre de chiffres significatifs).
la source
Tous ont expliqué en détail et je ne pourrais rien ajouter de plus. Bien que je voudrais l'expliquer en termes profanes ou en anglais simple
.....
Une variable, capable de stocker ou de représenter «1,9» fournit moins de précision que celle capable de contenir ou de représenter 1,9999. Ces fractions peuvent représenter une énorme différence dans les gros calculs.
la source
La double précision signifie que les nombres prennent deux fois la longueur du mot à stocker. Sur un processeur 32 bits, les mots sont tous 32 bits, donc les doubles sont 64 bits. En termes de performances, cela signifie que les opérations sur les nombres à double précision prennent un peu plus de temps à s'exécuter. Vous obtenez donc une meilleure autonomie, mais les performances sont minimes. Ce coup est un peu atténué par les unités matérielles à virgule flottante, mais il est toujours là.
Le N64 utilisait un NEC VR4300 basé sur MIPS R4300i qui est un processeur 64 bits, mais le processeur communique avec le reste du système sur un bus de 32 bits de large. Ainsi, la plupart des développeurs ont utilisé des nombres 32 bits car ils sont plus rapides, et la plupart des jeux à l'époque n'avaient pas besoin de précision supplémentaire (ils utilisaient donc des flotteurs et non des doubles).
Les trois systèmes peuvent effectuer des opérations flottantes à simple et double précision, mais ce n'est peut-être pas en raison des performances. (bien qu'à peu près tout après le n64 utilisait un bus 32 bits donc ...)
la source
Tout d'abord, float et double sont tous deux utilisés pour la représentation des nombres fractionnaires. Ainsi, la différence entre les deux provient du fait avec quelle précision ils peuvent stocker les nombres.
Par exemple: je dois stocker 123.456789. L'un peut ne stocker que 123.4567 tandis que d'autres peuvent stocker l'exact 123.456789.
Donc, fondamentalement, nous voulons savoir à quel point le nombre peut être stocké avec précision et c'est ce que nous appelons la précision.
Citant @Alessandro ici
La précision indique le nombre de chiffres décimaux corrects, c'est-à-dire sans aucune sorte d'erreur de représentation ou d'approximation. En d'autres termes, il indique le nombre de chiffres décimaux pouvant être utilisés en toute sécurité.
Float peut stocker avec précision environ 7 à 8 chiffres dans la partie fractionnaire tandis que Double peut stocker avec précision environ 15 à 16 chiffres dans la partie fractionnaire
Ainsi, double peut stocker le double de la quantité de partie fractionnaire à partir du flottant. C'est pourquoi Double s'appelle le double du flotteur
la source
Conformément à la norme IEEE754 • Standard pour le stockage en virgule flottante • Standards 32 et 64 bits (simple précision et double précision) • Exposant 8 et 11 bits respectivement • Formats étendus (mantisse et exposant) pour les résultats intermédiaires
la source
Le nombre simple précision utilise 32 bits, le MSB étant un bit de signe, tandis que le nombre double précision utilise 64 bits, MSB étant un bit de signe
Précision simple
SEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFF.(SIGN+EXPONENT+SIGNIFICAND)
Double precision:
SEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.(SIGN+EXPONENT+SIGNIFICAND)
la source