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

C++에서 곱셈(*)·나눗셈(/) 연산자 없이 숫자에 15를 곱하는 방법

C++에서는 왼쪽 시프트(<<) 연산자를 활용하면 15를 곱하는 효과를 낼 수 있습니다. 왼쪽 시프트는 본질적으로 2의 거듭제곱을 곱하는 연산이기 때문입니다. 예를 들어 1을 한 번 왼쪽 시프트하면 2를 곱한 결과가 됩니다.

주어진 숫자를 4비트만큼 왼쪽 시프트하면 16 × n을 얻게 됩니다. 여기서 원래의 n을 빼면 (16 × n) − n = 15 × n, 즉 15를 곱한 값이 됩니다.

또 다른 방법으로는 식을 8n + 4n + 2n + n으로 분해하는 것이 있습니다. 8, 4, 2는 모두 2의 거듭제곱이므로 각 항을 왼쪽 시프트로 손쉽게 계산한 뒤 더하면 됩니다.

알고리즘

  • 숫자 n을 초기화합니다.
  • n << 4를 계산하여 16 × n을 구합니다.
  • 위 결과에서 n을 뺍니다.
  • 최종 결과를 반환합니다.

구현

다음은 위 알고리즘을 C++로 구현한 코드입니다.

#include <bits/stdc++.h>
using namespace std;
long long getMultiplicationResult(long long n) {
    return (n << 4) - n;
}
int main() {
    long long n = 15;
    cout << getMultiplicationResult(n) << endl;
    return 0;
}

실행 결과

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

225

n = 15일 때 (15 << 4) − 15 = 240 − 15 = 225로, 곱셈 연산자를 사용하지 않고도 정확히 15배의 값을 얻을 수 있음을 확인할 수 있습니다. 이 기법은 비트 연산에 익숙해지는 데 도움이 되며, 임베디드 환경 등에서 곱셈 명령어 사용을 피하고 싶을 때 유용하게 활용됩니다.