# Count Number of Bits to be Flipped to Convert A to B

Suppose, I have two numbers A and B. I need to find out how many numbers of bits needed to be changed to convert A to B.

Like:

A = 1101101
B = 1011011
^^ ^^
Here, we need to change 4 bits to convert A to B

How can I do this?

Solution:

1. Calculate XOR of A and B.
a_xor_b = A ^ B
2. Count the set bits in the above calculated XOR result.
countSetBits(a_xor_b)
XOR of two number will have set bits only at those places where A differs from B.

```int countSetBits(unsigned int n) {
unsigned int count = 0;
while (n) {
count += n & 1;
n >>= 1;
}
return count;
}

// get the no. of bits to be flipped to convert 'a' to 'b'
int getNoBits(int a, int b) {
// xor of 'a' & 'b' will have set bits at those
// places where bits of 'a' and 'b' differs
unsigned int k = a ^ b;
return countSetBits(k);
}
```

### One Thought on “Count Number of Bits to be Flipped to Convert A to B”

1. #include
int bitcount(int);
int main()
{
int a=2,b=4,c;
c=a^b;
int y=bitcount(c);
printf(“%d Bits needed to be changed!”,y);
return 0;
}
int bitcount(int x)
{
int b;
for(b=0;x!=0;x>>=1)
if(x&01)
b++;
return b;
}