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

Đếm số bit thay đổi khi cộng 1 trong C++

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