Cho số num. Đếm số bit thay đổi khi cộng 1 vào num.
Ví dụ
num = 10 (1010₂) → 11 (1011₂) → 1 bit thay đổi
num = 5 (101₂) → 6 (110₂) → 2 bit thay đổi
Phương pháp
XOR giữa n và n+1 sẽ có bit 1 ở các vị trí thay đổi. Dùng __builtin_popcount() đếm số bit 1.
Ví dụ minh họa (C++)
#include <iostream>
using namespace std;
int changedbit(int n) {
int XOR = n ^ (n + 1);
int count = __builtin_popcount(XOR);
return count;
}
int main() {
int n = 10;
cout << "count is: " << changedbit(n);
return 0;
}
Đầu ra
count is: 1