Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 비트 연산자를 사용하여 숫자 곱하기

<시간/>

이 튜토리얼에서는 비트 연산자를 사용하여 주어진 두 숫자를 곱하는 프로그램을 작성할 것입니다.

왼쪽 시프트(<<) 연산자는 곱셈에 사용되는 반면 오른쪽 시프트(>>) 나눗셈에 사용됩니다.

두 숫자의 곱셈 x, y x * y =(x * 2) * (y / 2)로 쓸 수 있습니다. y가 짝수이면 x * y =(x * y) * (y / 2) + x와 같습니다.

따라서 두 번째 숫자가 홀수일 때마다 결과에 첫 번째 숫자를 더합니다. 문제를 해결하는 단계를 살펴보겠습니다.

알고리즘

  • 두 개의 숫자를 초기화합니다.
  • 두 번째 숫자가 0이 될 때까지 반복하는 루프를 작성하세요.
    • 두 번째 숫자가 홀수이면 결과에 첫 번째 숫자를 더하세요.
    • 첫 번째 숫자를 1비트 왼쪽으로 이동합니다.
    • 두 번째 숫자를 1비트 오른쪽으로 이동합니다.

구현

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

#include <bits/stdc++.h>
using namespace std;
int multiplyTwoNumbers(int a, int b) {
   int result = 0;
   while (b > 0) {
      if (b & 1) {
         result += a;
         }
      a = a << 1;
      b = b >> 1;
   }
   return result;
}
int main() {
   cout << multiplyTwoNumbers(75, 4) << endl;
   cout << multiplyTwoNumbers(90, 9) << endl;
   cout << multiplyTwoNumbers(83, 66) << endl;
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

300
810
5478