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

• Difficulty Level : Easy
• Last Updated : 07 Sep, 2021

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

Become a success story instead of just reading about them. Prepare for coding interviews at Amazon and other top product-based companies with our Amazon Test Series. Includes topic-wise practice questions on all important DSA topics along with 10 practice contests of 2 hours each. Designed by industry experts that will surely help you practice and sharpen your programming skills. Wait no more, start your preparation today!

```  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 > 0)``    ``{``        ``count++;``        ``n &= (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 &=(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 ``+``=` `1``        ``n &``=` `(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".`

## 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 &= (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

 ``

## Javascript

 ``
Output
`4`

## C++

 `// C++ program``#include ``using` `namespace` `std;` `int` `countFlips(``int` `a, ``int` `b)``{` `  ``// initially flips is equal to 0``  ``int` `flips = 0;` `  ``// & each bits of a && b with 1``  ``// and store them if t1 and t2``  ``// if t1 != t2 then we will flip that bit` `  ``while``(a > 0 || b > 0){` `    ``int` `t1 = (a&1);``    ``int` `t2 = (b&1);` `    ``if``(t1!=t2){``      ``flips++;``    ``}``    ``// right shifting a and b``    ``a>>=1;``    ``b>>=1;``  ``}` `  ``return` `flips;``}` `int` `main () {``  ``int` `a = 10;``  ``int` `b = 20;``  ``cout <

## Java

 `/*package whatever //do not write package name here */` `// CONTRIBUTED BY PRAVEEN VISHWAKARMA` `import` `java.io.*;` `class` `GFG {``      ` `      ``public` `static` `int` `countFlips(``int` `a, ``int` `b){``          ``// initially flips is equal to 0``        ``int` `flips = ``0``;``      ` `          ``// & each bits of a && b with 1``          ``// and store them if t1 and t2``        ``// if t1 != t2 then we will flip that bit``        ` `          ``while``(a>``0` `|| b>``0``){``          ` `            ``int` `t1 = (a&``1``);``              ``int` `t2 = (b&``1``);``              ` `              ``if``(t1!=t2){``                ``flips++;``            ``}``              ``// right shifting a and b``              ``a>>>=``1``;``              ``b>>>=``1``;``        ``}``      ` `      ``return` `flips;``    ``}``      ` `    ``public` `static` `void` `main (String[] args) {``        ``int` `a = ``10``;``          ``int` `b = ``20``;``          ``System.out.println(countFlips(a, b));``    ``}``  ` `}`

## Python3

 `def` `countFlips(a, b):``    ` `    ``# initially flips is equal to 0``    ``flips ``=` `0``    ` `    ``# & each bits of a && b with 1``    ``# and store them if t1 and t2``    ``# if t1 != t2 then we will flip that bit``    ``while``(a > ``0` `or` `b > ``0``):``        ``t1 ``=` `(a & ``1``)``        ``t2 ``=` `(b & ``1``)``        ``if``(t1 !``=` `t2):``            ``flips ``+``=` `1``            ` `        ``# right shifting a and b``        ``a>>``=``1``        ``b>>``=``1``    ` `    ``return` `flips``    ` `a ``=` `10``b ``=` `20``print``(countFlips(a, b))` `# This code is contributed by shivanisinghss2110`

## C#

 `/*package whatever //do not write package name here */``using` `System;` `class` `GFG {``      ` `      ``public` `static` `int` `countFlips(``int` `a, ``int` `b)``      ``{``        ` `          ``// initially flips is equal to 0``        ``int` `flips = 0;``      ` `          ``// & each bits of a && b with 1``          ``// and store them if t1 and t2``        ``// if t1 != t2 then we will flip that bit       ``          ``while``(a > 0 || b > 0){``          ` `            ``int` `t1 = (a&1);``              ``int` `t2 = (b&1);``              ` `              ``if``(t1 != t2){``                ``flips++;``            ``}``              ``// right shifting a and b``              ``a>>=1;``              ``b>>=1;``        ``}``      ` `      ``return` `flips;``    ``}``    ` `  ``// Driver code``    ``public` `static` `void` `Main (String[] args) {``        ``int` `a = 10;``          ``int` `b = 20;``          ``Console.Write(countFlips(a, b));``    ``}``  ` `}` `// This code is contributed by shivanisinghss2110`

## Javascript

 ``
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 write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.