使用位運算子在 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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP