Compare two binary numbers and get the different bits

19,235

Solution 1

Hrmmm, the first non-recursive idea that comes to mind is:

int a = ...;
int b = ...;
int x = a ^ b;

int count;

for (int i = 0; i < 32; ++i) {
    if (x & (1 << i)) {
        ++count;
    }
}

Solution 2

std::bitset::count should do what you're looking for:

http://www.cplusplus.com/reference/stl/bitset/count/

http://en.cppreference.com/w/cpp/utility/bitset/count

Share:
19,235
TTT
Author by

TTT

Nothing

Updated on June 30, 2022

Comments

  • TTT
    TTT almost 2 years

    Possible Duplicate:
    Best algorithm to count the number of set bits in a 32-bit integer?

    I want to write a program to get the number of 1's bit in comparing two numbers.if I compare the bits between any two numbers to find where the binary numbers are different in the 1's and 0's. in other words Exclusive OR (XOR) relationship.

    like if 22 (which has 10110 binary)and compare it with 15 (which has 01111 binary)

    the first one 10110

    the second one 01111

    the result 11001

    and the answer would be 25 but what I want to get is 3 where there is three 1's and 0's that are different.

  • Potatoswatter
    Potatoswatter about 12 years
    +1. It's important to use the library function if your program spends a lot of time doing this, because most microprocessors have a dedicated "population count" instruction that is difficult to portably access otherwise. Also note that bitset supports XOR and conversion to and from unsigned long numbers.