Compare two binary numbers and get the different bits

TTT picture TTT · Mar 31, 2012 · Viewed 18.4k times · Source

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.

Answer

Corbin picture Corbin · Mar 31, 2012

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;
    }
}