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배의 값을 얻을 수 있음을 확인할 수 있습니다. 이 기법은 비트 연산에 익숙해지는 데 도움이 되며, 임베디드 환경 등에서 곱셈 명령어 사용을 피하고 싶을 때 유용하게 활용됩니다.