C++ 프로그래밍에서 지수 계산은 다양한 알고리즘과 수학적 연산에서 자주 활용됩니다. 이번 글에서는 C++ 표준 라이브러리(STL)에서 제공하는 std::exp2() 함수의 개념, 문법, 그리고 실전 예제까지 자세히 살펴보겠습니다.
std::exp2() 함수란?
std::exp2()는 C++ 표준 라이브러리에 내장된 수학 함수로, <cmath> 또는 <ctgmath> 헤더 파일에 정의되어 있습니다. 이 함수는 주어진 숫자에 대해 밑이 2인 지수 함수, 즉 2n의 값을 계산합니다.
자연상수 e(약 2.71828)를 밑으로 사용하는 일반적인 exp() 함수와 달리, exp2()는 2를 밑으로 사용하기 때문에 비트 연산, 이진 데이터 처리 등 컴퓨터 과학 분야의 계산에서 특히 유용합니다. 반환 타입은 인자의 타입에 따라 double, float 또는 long double 중 하나로 결정됩니다.
문법
exp2(double n);
exp2(float n);
exp2(long double n);
매개변수
- n − 지수(exponent) 값입니다.
반환 값
밑이 2인 지수 값, 즉 2n을 반환합니다.
사용 예제
예제 1: 양수 지수 계산
#include <cmath>
#include <iostream>
using namespace std;
int main() {
double result = exp2(3.14);
cout << "Value of exp2(3.14) is: " << result << endl;
return 0;
}
출력:
Value of exp2(3.14) is: 8.81524
2의 3.14제곱은 약 8.81524입니다.
예제 2: 음수 지수 계산
#include <cmath>
#include <iostream>
using namespace std;
int main() {
double var = -2.34;
double hold = exp2(var);
cout << "Value of exp2(" << var << ") is: " << hold << endl;
return 0;
}
출력:
Value of exp2(-2.34) is: 0.19751
음수 지수를 입력하면 결과값이 0과 1 사이의 소수가 됩니다. 위 예제에서 2-2.34 ≈ 0.19751이 출력되는 것을 확인할 수 있습니다.
예제 3: 정수 지수 계산
#include <cmath>
#include <iostream>
using namespace std;
int main() {
int var = 10;
int hold = exp2(var);
cout << "Value of exp2(" << var << ") is: " << hold << endl;
return 0;
}
출력:
Value of exp2(10) is: 1024
210 = 1024로, 컴퓨터 과학에서 자주 등장하는 값입니다. 이처럼 exp2()는 2의 거듭제곱을 손쉽게 구할 때 매우 편리합니다.
예제 4: 0으로 나누기 시 예외 발생
#include <cmath>
#include <iostream>
using namespace std;
int main() {
int var = 1/0; // 0으로 나누기: 정의되지 않은 동작
int hold = exp2(var);
cout << "Value of exp2(" << var << ") is: " << hold << endl;
return 0;
}
출력:
Floating point exception (core dumped)
위 예제처럼 0으로 나누는 연산(1/0)은 C++에서 정의되지 않은 동작(undefined behavior)이며, 실행 시 부동 소수점 예외(floating point exception)가 발생해 프로그램이 비정상 종료됩니다. 실제 코드에서는 반드시 이런 상황을 피해야 합니다.
마무리
std::exp2() 함수는 밑이 2인 지수 값을 간단하고 효율적으로 계산할 수 있게 해주는 표준 라이브러리 함수입니다. 알고리즘 문제 풀이나 이진 연산 관련 작업에서 2의 거듭제곱이 필요할 때 유용하게 활용해 보시기 바랍니다.