# XOR counts of 0s and 1s in binary representation

Given a number, the task is to find XOR of count of 0s and count of 1s in binary representation of a given number.
Examples:

```Input  : 5
Output : 3
Binary representation : 101
Count of 0s = 1,
Count of 1s = 2
1 XOR 2 = 3.

Input  : 7
Output : 3
Binary representation : 111
Count of 0s = 0
Count of 1s = 3
0 XOR 3 = 3.
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

The idea is simple, we traverse through all bits of a number, count 0s and 1s and finally return XOR of two counts.

## C++

 `// C++ program to find XOR of counts 0s and 1s in ` `// binary representation of n. ` `#include ` `using` `namespace` `std; ` ` `  `// Returns XOR of counts 0s and 1s in ` `// binary representation of n. ` `int` `countXOR(``int` `n) ` `{ ` `    ``int` `count0 = 0, count1 = 0; ` `    ``while` `(n) ` `    ``{ ` `        ``//calculating count of zeros and ones ` `        ``(n % 2 == 0) ? count0++ :count1++; ` `        ``n /= 2; ` `    ``} ` `    ``return` `(count0 ^ count1); ` `} ` ` `  `// Driver Program ` `int` `main() ` `{ ` `    ``int` `n = 31; ` `    ``cout << countXOR (n); ` `    ``return` `0; ` `} `

## Java

 `// Java program to find XOR of counts 0s  ` `// and 1s in binary representation of n. ` ` `  `class` `GFG { ` `     `  `    ``// Returns XOR of counts 0s and 1s  ` `    ``// in binary representation of n. ` `    ``static` `int` `countXOR(``int` `n) ` `    ``{ ` `        ``int` `count0 = ``0``, count1 = ``0``; ` `        ``while` `(n != ``0``) ` `        ``{ ` `            ``//calculating count of zeros and ones ` `            ``if``(n % ``2` `== ``0``)  ` `            ``count0++ ; ` `            ``else` `            ``count1++; ` `            ``n /= ``2``; ` `        ``} ` `        ``return` `(count0 ^ count1); ` `    ``} ` `     `  `    ``// Driver Program ` `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` `        ``int` `n = ``31``; ` `        ``System.out.println(countXOR (n)); ` `    ``} ` `} ` ` `  `// This code is contributed by prerna saini `

## Python3

 `# Python3 program to find XOR of counts 0s  ` `# and 1s in binary representation of n. ` ` `  `# Returns XOR of counts 0s and 1s  ` `# in binary representation of n. ` `def` `countXOR(n): ` `     `  `    ``count0, count1 ``=` `0``, ``0` `    ``while` `(n !``=` `0``): ` `     `  `        ``# calculating count of zeros and ones ` `        ``if``(n ``%` `2` `=``=` `0``):  ` `            ``count0 ``+``=` `1` `        ``else``: ` `            ``count1 ``+``=` `1` `        ``n ``/``/``=` `2` `         `  `    ``return` `(count0 ^ count1) ` `     `  `# Driver Code ` `n ``=` `31` `print``(countXOR(n)) ` ` `  `# This code is contributed by Anant Agarwal. `

## C#

 `// C# program to find XOR of counts 0s  ` `// and 1s in binary representation of n. ` `using` `System; ` ` `  `class` `GFG { ` `      `  `    ``// Returns XOR of counts 0s and 1s  ` `    ``// in binary representation of n. ` `    ``static` `int` `countXOR(``int` `n) ` `    ``{ ` `        ``int` `count0 = 0, count1 = 0; ` `        ``while` `(n != 0) ` `        ``{ ` `             `  `            ``// calculating count of zeros  ` `            ``// and ones ` `            ``if``(n % 2 == 0)  ` `                ``count0++ ; ` `            ``else` `                ``count1++; ` `                 `  `            ``n /= 2; ` `        ``} ` `         `  `        ``return` `(count0 ^ count1); ` `    ``} ` `      `  `    ``// Driver Program ` `    ``public` `static` `void` `Main() ` `    ``{ ` `         `  `        ``int` `n = 31; ` `         `  `        ``Console.WriteLine(countXOR (n)); ` `    ``} ` `} ` ` `  `// This code is contributed by Anant Agarwal. `

## PHP

 ` `

Output:

```5
```

One observation is, for a number of the form 2^x – 1, the output is always x. We can directly produce answer for this case by first checking n+1 is a power of two or not.

My Personal Notes arrow_drop_up

Improved By : chitranayal

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.