La fonction frexp () en C ++ décompose un nombre à virgule flottante en son significande binaire.
Le significande binaire est une virgule flottante dont la valeur absolue (mantisse) se situe dans l'intervalle (0,5, 1) et un exposant entier pour 2.
La fonction est définie dans le fichier d'en-tête.
Mathématiquement,
x = significande binaire * 2 exposant
où, exposant est stocké à l'emplacement pointé par exp et le significand binaire est la valeur retournée par frexp ().
prototype frexp () (à partir de la norme C ++ 11)
double fréx (double x, int * exp); float frexp (float x, int * exp); long double frexp (long double x, int * exp); double fréquence (T x, int * exp); // Pour le type intégral
La fonction frexp () prend deux arguments et renvoie la valeur de significande binaire de type double
, float
ou long double
.
Paramètres frexp ()
- x - La valeur à décomposer.
- exp - Le pointeur vers un entier où la valeur de l'exposant doit être stockée.
frexp () Valeur de retour
La fonction frexp () renvoie le significande binaire dont la valeur absolue se situe dans l'intervalle (0,5, 1). Si x est nul, le significande et l'exposant sont tous deux nuls.
valeurs de retour de frexp ()Paramètre (x) | Significand binaire | Exposant |
---|---|---|
0 | 0 | 0 |
x> = 1 | Positif | Positif |
x <= -1 | Négatif | Positif |
-1 <x <0 | Négatif | Négatif |
0 <x <1 | Positif | Négatif |
Exemple 1: Comment fonctionne la fonction frexp () en C ++?
#include #include using namespace std; int main () ( double x = 6.81, significand; int *exp; significand = frexp(x , exp); cout << x << " = " << significand << " * 2^" << *exp << endl; return 0; )
Lorsque vous exécutez le programme, la sortie sera:
6,81 = 0,85125 * 2 3
Exemple 2: fonction frexp () avec type intégral
#include #include using namespace std; int main () ( double significand; int *exp, x = 25; significand = frexp (x , exp); cout << x << " = " << significand << " * 2^" << *exp << endl; return 0; )
Lorsque vous exécutez le programme, la sortie sera:
25 = 0,78125 * 2 5