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

C++ STL exp2() 함수 완벽 정리: 밑이 2인 지수 함수 계산법

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의 거듭제곱이 필요할 때 유용하게 활용해 보시기 바랍니다.