使用位運算子在 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

更新於: 2021-10-25

10K+ 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告