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