Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ STL의 ilogb() 함수: 개념, 구문 및 예제 총정리


이 글에서는 C++ STL의 ilogb() 함수의 동작 원리, 구문, 그리고 실제 활용 예제를 자세히 살펴보겠습니다.

ilogb() 함수란?

ilogb()는 C++ STL에 내장된 함수로, <cmath> 헤더 파일에 정의되어 있습니다. 이름 그대로 'integer binary logarithm(정수 이진 로그)'을 의미하며, 주어진 값의 로그값에서 정수 부분만을 추출하는 데 사용됩니다.

이 함수는 FLT_RADIX(대부분의 시스템에서 2)를 밑(base)으로 삼아 |x|의 로그값 중 정수 부분을 반환합니다. 따라서 일반적인 시스템 환경에서는 floor(log2(|x|))와 동일한 결과를 얻을 수 있습니다.

구문

int ilogb(double x);

매개변수

이 함수는 다음 매개변수를 받습니다.

  • x − 로그값을 구하고자 하는 대상 값입니다.

반환값

이 함수는 FLT_RADIX를 밑으로 하는 |x|의 정수 로그값을 반환하며, 매개변수의 값에 따라 아래와 같은 특수 값을 반환할 수 있습니다.

  • NaN − FP_LOGBNAN을 반환합니다.

  • 무한대(Infinite) − INT_MAX를 반환합니다.

  • 0 − FP_LOGB0을 반환합니다.

입력

ilogb(2);

출력

1

예제 1

#include <cfloat>
#include <cmath>
#include <iostream>
using namespace std;

int main() {
    int output;
    double var = 2;
    output = ilogb(var);
    cout << "ilogb(" << var << ")의 값은: " << output << endl;
    return 0;
}

출력

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

ilogb(2)의 값은: 1

예제 2

#include <cfloat>
#include <cmath>
#include <iostream>
using namespace std;

int main() {
    int output;
    double var = 10.23;
    output = ilogb(var);
    cout << "ilogb(" << var << ")의 값은: " << output << endl;
    return 0;
}

출력

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

ilogb(10.23)의 값은: 3

10.23의 경우 log₂(10.23) ≈ 3.35이므로, 그 정수 부분인 3이 반환됩니다.