Số nhị phân chỉ dùng 0 và 1. Mỗi chữ số gọi là bit.
Bù 1 (1's Complement)
Đảo ngược tất cả bit: 0→1, 1→0.
Bù 1 của 101100 = 010011
Bù 2 (2's Complement)
Bù 1 + 1.
Bù 2 của 101101 = 010011
Code ví dụ
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char binary[10] = "01001011";
cout << "So nhi phan: " << binary;
// Bù 1
int len = strlen(binary);
for (int i = 0; i < len; i++)
binary[i] = (binary[i] == '0') ? '1' : '0';
cout << "\nBu 1: " << binary;
// Bù 2
for (int i = len-1; i >= 0; i--) {
if (binary[i] == '0') {
binary[i] = '1';
break;
} else
binary[i] = '0';
}
cout << "\nBu 2: " << binary;
return 0;
}
Kết quả
So nhi phan: 01001011 Bu 1: 10110100 Bu 2: 10110101