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