Count number of bits to be flipped to convert A to B

Given two numbers ‘a’ and b’. Write a program to count number of bits needed to be flipped to convert ‘a’ to ‘b’.

Example :

```Input : a = 10, b = 20
Output : 4
Binary representation of a is 00001010
Binary representation of b is 00010100
We need to flip highlighted four bits in a
to make it b.

Input : a = 7, b = 10
Output : 3
Binary representation of a is 00000111
Binary representation of b is 00001010
We need to flip highlighted three bits in a
to make it b.
```

```  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.

C++

 `// Count number of bits to be flipped ` `// to convert A into B ` `#include ` `using` `namespace` `std; ` ` `  `// Function that count set bits ` `int` `countSetBits(``int` `n) ` `{ ` `    ``int` `count = 0; ` `    ``while` `(n) ` `    ``{ ` `        ``count += n & 1; ` `        ``n >>= 1; ` `    ``} ` `    ``return` `count; ` `} ` ` `  `// Function that return count of ` `// flipped number ` `int` `FlippedCount(``int` `a, ``int` `b) ` `{ ` `    ``// Return count of set bits in ` `    ``// a XOR b ` `    ``return` `countSetBits(a^b); ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `a = 10; ` `    ``int` `b = 20; ` `    ``cout << FlippedCount(a, b)<

Java

 `// Count number of bits to be flipped ` `// to convert A into B ` `import` `java.util.*; ` ` `  `class` `Count { ` `     `  `    ``// Function that count set bits ` `    ``public` `static` `int` `countSetBits(``int` `n) ` `    ``{ ` `        ``int` `count = ``0``; ` `        ``while` `(n != ``0``) { ` `            ``count += n & ``1``; ` `            ``n >>= ``1``; ` `        ``} ` `        ``return` `count; ` `    ``} ` ` `  `    ``// Function that return count of ` `    ``// flipped number ` `    ``public` `static` `int` `FlippedCount(``int` `a, ``int` `b) ` `    ``{ ` `        ``// Return count of set bits in ` `        ``// a XOR b ` `        ``return` `countSetBits(a ^ b); ` `    ``} ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` `        ``int` `a = ``10``; ` `        ``int` `b = ``20``; ` `        ``System.out.print(FlippedCount(a, b)); ` `    ``} ` `} ` ` `  `// This code is contributed by rishabh_jain `

Python3

 `# Count number of bits to be flipped ` `# to convert A into B ` ` `  `# Function that count set bits ` `def` `countSetBits( n ): ` `    ``count ``=` `0` `    ``while` `n: ` `        ``count ``+``=` `n & ``1` `        ``n >>``=` `1` `    ``return` `count ` `     `  `# Function that return count of ` `# flipped number ` `def` `FlippedCount(a , b): ` ` `  `    ``# Return count of set bits in ` `    ``# a XOR b ` `    ``return` `countSetBits(a^b) ` ` `  `# Driver code ` `a ``=` `10` `b ``=` `20` `print``(FlippedCount(a, b)) ` ` `  `# This code is contributed by "Sharad_Bhardwaj". `

/div>

C#

 `// Count number of bits to be ` `// flipped to convert A into B ` `using` `System; ` ` `  `class` `Count { ` `     `  `    ``// Function that count set bits ` `    ``public` `static` `int` `countSetBits(``int` `n) ` `    ``{ ` `        ``int` `count = 0; ` `        ``while` `(n != 0) { ` `            ``count += n & 1; ` `            ``n >>= 1; ` `        ``} ` `        ``return` `count; ` `    ``} ` ` `  `    ``// Function that return ` `    ``// count of flipped number ` `    ``public` `static` `int` `FlippedCount(``int` `a, ``int` `b) ` `    ``{ ` `    ``// Return count of set  ` `    ``// bits in a XOR b ` `        ``return` `countSetBits(a ^ b); ` `    ``} ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``int` `a = 10; ` `        ``int` `b = 20; ` `        ``Console.WriteLine(FlippedCount(a, b)); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m. `

PHP

 `>= 1; ` `    ``} ` `    ``return` `\$count``; ` `} ` `     `  `// Function that return  ` `// count of flipped number ` `function` `FlippedCount(``\$a``, ``\$b``) ` `{ ` `    ``// Return count of set  ` `    ``// bits in a XOR b ` `    ``return` `countSetBits(``\$a` `^ ``\$b``); ` `} ` ` `  `// Driver code ` `\$a` `= 10; ` `\$b` `= 20; ` `echo` `FlippedCount(``\$a``, ``\$b``); ` ` `  `// This code is contributed by mits ` `?> `

Output :

`4`

Thanks to Sahil Rajput for providing above implementation.

To get the set bit count please see this post: Count set bits in an integer

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to [email protected] See your article appearing on the GeeksforGeeks main page and help other Geeks.