C++에서 n × 3.5의 결과를 구하려면 (n × 2) + n + (n ÷ 2)를 계산하면 됩니다. 비트를 왼쪽으로 1비트 이동하면 n × 2가 되고, 오른쪽으로 1비트 이동하면 n ÷ 2가 됩니다. 이 값들을 모두 더하면 원하는 결과를 얻을 수 있습니다.
n × 3.5 = (n × 2) + n + (n ÷ 2)
여러 가지 n 값을 대입해 이 등식이 실제로 성립하는지 직접 확인해 볼 수 있습니다. 몇 가지 예시를 살펴보겠습니다.
입력
2 7 10
출력
7 24 35
참고로 입력값이 홀수일 경우에는 정수 나눗셈의 특성상 소수점 이하가 버려집니다. 예를 들어 7 × 3.5 = 24.5이지만, 실제 출력 결과는 24입니다.
알고리즘
- 정수 n을 초기화합니다.
- 왼쪽 시프트 연산자(<<)를 사용해 n × 2를 구합니다.
- 오른쪽 시프트 연산자(>>)를 사용해 n ÷ 2를 구합니다.
- 위에서 구한 두 값에 n을 더해 최종 결과를 계산합니다.
- 결과를 반환합니다.
위 단계대로만 진행하면 되는 아주 간단한 문제입니다.
구현
다음은 위 알고리즘을 C++로 구현한 코드입니다.
#include <bits/stdc++.h>
using namespace std;
int getTheResult(int x) {
return (x << 1) + x + (x >> 1);
}
int main() {
int n = 10;
cout << getTheResult(n) << endl;
return 0;
}출력
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
35
이처럼 곱셈 연산자를 사용하지 않고 시프트 연산만으로 3.5배를 계산할 수 있으며, 하드웨어 수준에서 시프트 연산이 곱셈보다 빠르게 처리되는 환경에서는 성능상 이점을 얻을 수 있습니다.