C ++ ilogb () - Стандартная библиотека C ++

Функция ilogb () в C ++ возвращает целую часть логарифма | x |, используя FLT_RADIX в качестве основы для логарифма.

Это определено в заголовочном файле.

Математически,

 x = значение * FLT_RADIXexponent

Мантисса - это значение с плавающей запятой в диапазоне (1.0, 2.0), x - аргумент, переданный в ilogb (), а экспонента - это целочисленное значение, возвращаемое ilogb (). Обычно значение FLT_RADIX равно 2.

Значение, возвращаемое ilogb (), на единицу меньше экспоненты, сгенерированной функцией frexp (), поскольку мантисса находится в диапазоне (1.0, 2.0) вместо (0.5, 1.0), как в frexp ().

прототип ilogb () (согласно стандарту C ++ 11)

int ilogb (двойной x); int ilogb (float x); int ilogb (длинный двойной x); int ilogb (T x); // Для целочисленного типа

ilogb () Параметры

Функция ilogb () принимает единственный аргумент, для которого вычисляется ilogb.

ilogb () Возвращаемое значение

Функция ilogb () возвращает целую часть логарифма | x |, используя FLT_RADIX в качестве основы для логарифма.

  • Если аргумент равен 0, он возвращает FP_LOGB0.
  • Если аргумент - NaN, он возвращает FP_LOGBNAN.
  • Если аргумент бесконечен, он возвращает INT_MAX.

Пример 1. Как функция ilogb () работает в C ++?

 #include #include #include using namespace std; int main() ( int result; double significand; double x = 16.81; result = ilogb(x); significand = x / pow(FLT_RADIX, result); cout << "ilogb (" << x << ") = " << result << endl; cout << x << " = " << significand << " * " << FLT_RADIX << "^" << result << endl << endl; return 0; ) 

Когда вы запустите программу, вывод будет:

 ilogb (16,81) = 4 16,81 = 1,05062 * 2 4 

Пример 2: функция ilogb () с целым типом

 #include #include #include using namespace std; int main() ( int result, x = 19; result = ilogb(x); double significand = x/pow(FLT_RADIX,result); cout << "ilogb (" << x << ") = " << result << endl; cout << x << " = " << significand << " * " << FLT_RADIX << "^" << result << endl << endl; return 0; ) 

Когда вы запустите программу, вывод будет:

 ilogb (19) = 4 19 = 1,1875 * 2 4

Интересные статьи...