Dưới đây là ví dụ cộng hai số chỉ dùng phép toán bitwise:
Ví dụ
#include <iostream>
#include <cmath>
using namespace std;
int add(int val1, int val2) {
while (val2 != 0) {
int carry = val1 & val2; // Các bit carry
val1 = val1 ^ val2; // Cộng không nhớ (XOR)
val2 = carry << 1; // Dịch carry sang trái 1 bit
}
return val1;
}
int main() {
cout << "Tong hai so: " << add(28, 8);
return 0;
}
Kết quả
Tong hai so: 36
Giải thích thuật toán:
carry = val1 & val2: Xác định các vị trí bit có cả hai đều là 1 (sẽ sinh nhớ).val1 = val1 ^ val2: Thực hiện cộng không nhớ (XOR: 0+0=0, 1+0=1, 0+1=1, 1+1=0).val2 = carry << 1: Dịch các bit nhớ sang trái 1 vị trí (nhân 2) để cộng vào lần sau.- Lặp lại cho đến khi không còn carry (
val2 == 0).
Đây là mô phỏng cách bộ vi xử lý thực hiện phép cộng tại cấp độ phần cứng.