English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Utilizzo e esempio della funzione frexp() in C++

库函数cmathC++

La funzione frexp(x, exp) in C++ restituisce il mantissa e l'esponente di un numero a virgola mobile.

Il numero significativo binario è un numero a virgola mobile, il cui valore assoluto (mantissa) si trova nell'intervallo [0.5, 1], mentre l'esponente è un intero di 2.

La funzione si trova in<cmath>Definito nel file di intestazione.

Matematicamente

x = Binary significand * 2^esponente

L'esponente viene memorizzato nell'indirizzo esp, mentre il numero significativo binario è il valore restituito da frexp().

Prospetto frexp() [dalla versione C++11]

double frexp(double x, int* exp);
float frexp(float x, int* exp);
long double frexp(long double x, int* exp);
double frexp(T x, int* exp); // Per interi

La funzione frexp() ha due parametri e restituisce un valore binario significativo di tipo double, float o long double.

Parametro frexp()

  • x -Valore da decomporre.

  • exp -Puntatore all'intero da cui memorizzare il valore dell'esponente.

Valore di ritorno di frexp()

La funzione frexp() restituisce il mantissa, il cui valore assoluto si trova nella gamma [0.5, 1]. Se x è zero, sia il numero significativo che l'esponente sono zero.

Valore di ritorno di frexp()
Parametro (x)Bit effettivo binarioEsponente
000
x >= 1PositivoPositivo
x <= -1NegativoPositivo
-1 < x < 0NegativoNegativo
0 < x < 1PositivoNegativo

Esempio 1: come funziona la funzione frexp() in C++?

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	double x = 6.81, significand;
	int *exp;
	significand = frexp(x, exp);
	cout << x << " = " << significand << " * 2^" << *exp << endl;
	return 0;
}

运行程序时,输出为:

6.81 = 0.85125 * 2^3

Esempio 2: funzione frexp() con tipo intero

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	double significand;
	int *exp, x = 25;
	significand = frexp(x, exp);
	cout << x << " = " << significand << " * 2^" << *exp << endl;
	return 0;
}

运行程序时,输出为:

25 = 0.78125 * 2^5

  库函数cmathC++