Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Cộng hai số không dùng +, ++ hoặc toán tử số học trong C/C++


Bài viết này chỉ cách cộng hai số không dùng toán tử số học như +, ++, -, --.

Để giải quyết, ta dùng logic bộ cộng nhị phân. Thiết kế half adder và full adder để cộng bit nhị phân. Bằng cách xâu chuỗi nhiều adder, tạo mạch cộng số lớn hơn.

Trong adder, thực hiện XOR hai số, cho nhớ (carry) dùng logic AND. Các tính năng này được triển khai để cộng hai số.

Ví dụ mã

#include <iostream>
using namespace std;

int add(int a, int b) {
    while (b != 0) {
        // lặp cho đến khi không còn nhớ
        int carry = a & b; // tìm nhớ bằng AND
        a = a ^ b; // XOR a và b, lưu vào a
        b = carry << 1; // dịch nhớ 1 bit trái, lưu vào b
    }
    return a;
}

int main() {
    int a, b;
    cout << "Nhập hai số để cộng: ";
    cin >> a >> b;
    cout << "Kết quả là: " << add(a, b);
    return 0;
}

Kết quả

Nhập hai số để cộng: 56 23
Kết quả là: 79