Computer >> Máy Tính >  >> Lập trình >> C ++

Nhân bất kỳ số nào bằng cách sử dụng Toán tử Bitwise trong C ++

Trong hướng dẫn này, chúng ta sẽ viết một chương trình nhân hai số đã cho bằng cách sử dụng toán tử bitwise.

Dịch chuyển bên trái (<<) toán tử được sử dụng cho phép nhân trong khi dịch chuyển phải (>>) được sử dụng cho sự phân chia.

Phép nhân hai số x, y có thể được viết là x * y =(x * 2) * (y / 2) nếu y chẵn thì bằng x * y =(x * y) * (y / 2) + x.

Vì vậy, bất cứ khi nào số thứ hai trở nên lẻ, hãy thêm số đầu tiên vào kết quả. Hãy xem các bước để giải quyết vấn đề.

Thuật toán

  • Khởi tạo hai số.
  • Viết một vòng lặp lặp lại cho đến khi số thứ hai trở thành 0.
    • Nếu số thứ hai là số lẻ, thì hãy thêm số đầu tiên vào kết quả.
    • Dịch sang trái số đầu tiên 1 bit.
    • Dịch sang phải số thứ hai 1 bit.

Thực hiện

Sau đây là cách thực hiện thuật toán trên trong 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;
}

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

300
810
5478