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