Quelle est la plus petite représentation exacte de 1/(2^x) pouvant être représentée dans le langage de programmation C?Quelle est la plus petite représentation exacte de 1/(2^x) pouvant être représentée dans le langage de programmation C?
Répondre
Sur la plupart des plates-formes, C double
est la même que la IEEE 754 double precision format. La valeur positive la plus proche de zéro supportée est de 2^-1022 (ce qui est égal à 1/2^1022). Cependant, si vous autorisez des types définis par l'utilisateur, il n'y a pas de limite, car vous pouvez toujours exprimer l'exposant comme un bigint.
Si vous stockez votre variable sous la forme d'un exposant négatif de 64 bits, 1/2^(2^63 - 1). :)
C'est un nombre reeeeally petit.
Si vous utilisez le GNU MP library (écrit en C), vous pouvez représenter n'importe quelle valeur jusqu'à la quantité d'installation RAM.
0, soit 1/(2^inf);)
Plus sérieusement, ceci est une question de bits d'exposant de flotteurs à double précision. Je ne pense pas que la norme C définisse elle-même la taille, mais IEEE 754 la définit pour avoir 11 bits exposants.
Permet d'ignorer les dénormals pendant un petit moment. Puisque la plus petite valeur d'exposant est -1022, cela devrait être 1/(2^1022). Mais il y a aussi le cas des dénormaux, que IIRC ne devrait tout simplement pas contenir de bits implicites. Les nombres dénormaux sont ainsi répartis uniformément sur la plage 0..1/(2^1022), donnant à log2 (52) plus de valeurs IIRC. Donc, je pense que la réponse finale devrait être 1/(2^(1074)).
avec IEEE-754 double
pour l'arithmétique, la plus petite valeur exacte de 1/2^n est:
- 2^-1022 si votre plate-forme ne prend pas en charge denormal
- 2^-1023 si votre plate-forme a le support dénormal, mais vous insistez sur le calcul en utilisant 1.0/2^n; c'est parce que 2^1023 est la plus grande puissance exacte représentable de deux dans
double
. - 2^-1074 si votre plate-forme est compatible avec la dénormalisation et si cela ne vous dérange pas de spécifier directement la valeur, par exemple avec la notation hexadécimale hexadécimale C99:
0x1.0p-1074
ou0x0.0000000000001p-1022
.
Si vous utilisez un autre type, par exemple long double
sur une machine x86 avec un compilateur qui que pour float 80 bits, la plus petite valeur peut être beaucoup plus petit (2^-16446, en supposant que je l'ai fait mon arithmétique correctement =)
- 1. Quelle est la plus petite empreinte dans C#
- 2. Quelle est la signification exacte de "int const *" dans C?
- 3. Quel est le langage de programmation le plus concis?
- 4. Quel est le langage de programmation le plus courant/le plus dense actuellement disponible?
- 5. Quelle est la complexité générale de la construction d'une représentation de langage canonique?
- 6. Quelle est la taille exacte de MySQL?
- 7. Changer le langage de programmation
- 8. Quelle génération de langage est C#?
- 9. identifier le langage de programmation
- 10. Quelle est la bibliothèque de programmation génétique la plus active?
- 11. Alternance stricte dans le langage de programmation C (de Tanenbaum)
- 12. quel est le meilleur langage de programmation pour le sélénium?
- 13. UML pour langage de programmation C
- 14. Le langage le plus proche de la syntaxe de Python est le langage de plus bas niveau!
- 15. évaluation des macros dans le langage de programmation c
- 16. Quel est ce langage de programmation?
- 17. Est-il difficile de compiler le langage de programmation Go?
- 18. Conception et implémentation d'un langage de programmation, quelle est la prochaine étape?
- 19. Quelle est la manière la plus simple de persister une petite chaîne dans mon extension FireFox?
- 20. Windows: Quel langage de programmation?
- 21. Quel est le meilleur langage de programmation pour écrire le système de suivi GPS de bureau?
- 22. Langage de programmation nommé "C Set 2"
- 23. Le langage de programmation C 2. ed. question
- 24. Langage de programmation pour le démarrage Internet
- 25. Quelle est la règle exacte des paramètres animate() de jQuery?
- 26. Pourquoi C++ est appelé langage de programmation orienté objet?
- 27. Ce qui a changé depuis « Le langage de programmation C »
- 28. primitives d'un langage de programmation
- 29. Langage de programmation NesC
- 30. Utilisation de la valeur de retour de scanf dans le langage de programmation C comme vérification
Vérifiez vos maths ici - un exposant de 64 bits devrait permettre jusqu'à 1/(2^(2^63-1)) – bdonlan
Là, corrigé. :) –