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