이 글에서는 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이 반환됩니다.