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ấu dùng bit trong C++

Cộng nhị phân

Số không dấu biểu diễn dưới dạng bit (nhị phân). Ví dụ 54 = 110110₂.

Quy tắc cộng bit:

  • 0+0=0
  • 1+0=1, 0+1=1
  • 1+1=0, nhớ 1

Ví dụ

a = 21 (10101), b = 27 (11011)
Kết quả: 48 (110000)

Mã nguồn C++ (dùng bitset)

#include <bits/stdc++.h>
#define M 32
using namespace std;

int binAdd(bitset<M> atemp, bitset<M> btemp) {
    bitset<M> ctemp;
    int carry = 0;
    for (int i = 0; i < M; i++) {
        if (atemp[i] + btemp[i] == 0) {
            ctemp[i] = carry;
            carry = 0;
        } else if (atemp[i] + btemp[i] == 1) {
            ctemp[i] = 1 - carry;
            if (carry) carry = 0;
        } else { // 1+1=2
            ctemp[i] = carry;
            carry = 1;
        }
    }
    return ctemp.to_ulong();
}

int main() {
    int a = 678, b = 436;
    cout << "Tổng " << a << " + " << b << " = ";
    bitset<M> num1(a), num2(b);
    cout << binAdd(num1, num2) << endl;
    return 0;
}

Kết quả

Tổng 678 + 436 = 1114