# Count numbers whose XOR with N is equal to OR with N

Given a number N, the task is to find the count of X such that N XOR X == N OR X, where 0<=X<=N

Examples:

Input: N = 5
Output: 2
For N = 5,
5 XOR 2 == 5 OR 2
5 XOR 0 == 5 OR 0
Thus, count is 2.

Input: N = 7
Output: 1
For N = 7,
7 XOR 0 == 7 OR 0
Thus, count is 1.

## Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

Approach: The idea is to convert given number to binary and then count the unset bits in it. 2^count gives us the number of X such that N XOR X == N OR X.

Below is the implementation of the above approach:

## C++

 `// C++ program to find  ` `// the XOR equals OR count  ` `#include ` `#include ` `using` `namespace` `std;  ` ` `  `class` `gfg {  ` `     `  `    ``// Function to calculate count  ` `    ``// of numbers with XOR equals OR  ` `    ``public``: ` `    ``int` `xorEqualsOrCount(``int` `N)  ` `    ``{  ` `         `  `        ``// variable to store count of unset bits  ` `        ``int` `count = 0;  ` `        ``int` `bit;  ` `        ``while` `(N > 0) {  ` `             `  `            ``bit = N % 2;  ` `            ``if` `(bit == 0)  ` `                ``count++;  ` `            ``N = N / 2;  ` `        ``}  ` `        ``return` `(``int``)``pow``(2, count);  ` `    ``} }; ` ` `  `    ``// Driver code  ` `    ``int` `main()  ` `    ``{  ` `        ``gfg g ; ` `        ``int` `N = 7;  ` `        ``cout<

## Java

 `// Java program to find the XOR equals OR count ` `import` `java.io.*; ` `import` `java.util.*; ` ` `  `class` `GFG { ` ` `  `    ``// Function to calculate count of numbers with XOR equals OR ` `    ``static` `int` `xorEqualsOrCount(``int` `N) ` `    ``{ ` `        ``// variable to store count of unset bits ` `        ``int` `count = ``0``; ` `        ``int` `bit; ` `        ``while` `(N > ``0``) { ` `            ``bit = N % ``2``; ` `            ``if` `(bit == ``0``) ` `                ``count++; ` `            ``N = N / ``2``; ` `        ``} ` `        ``return` `(``int``)Math.pow(``2``, count); ` `    ``} ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `main(String args[]) ` `    ``{ ` `        ``int` `N = ``7``; ` `        ``System.out.println(xorEqualsOrCount(N)); ` `    ``} ` `} `

## Python3

 `# Python3 program to find ` `# the XOR equals OR count ` ` `  `# Function to calculate count ` `# of numbers with XOR equals OR ` `def` `xorEqualsOrCount(N) : ` ` `  `    ``# variable to store ` `    ``# count of unset bits ` `    ``count ``=` `0` ` `  `    ``while``(N > ``0``) : ` ` `  `        ``bit ``=` `N ``%` `2` ` `  `        ``if` `bit ``=``=` `0` `: ` `            ``count ``+``=` `1` ` `  `        ``N ``/``/``=` `2` ` `  `    ``return` `int``(``pow``(``2``, count)) ` ` `  `# Driver code      ` `if` `__name__ ``=``=` `"__main__"` `: ` ` `  `    ``N ``=` `7` `    ``print``(xorEqualsOrCount(N)) ` `                 `  `# This code is contributed by  ` `# ANKITRAI1 `

## C#

 `// C# program to find  ` `// the XOR equals OR count ` `using` `System; ` ` `  `class` `GFG { ` ` `  `    ``// Function to calculate count  ` `    ``// of numbers with XOR equals OR ` `    ``static` `int` `xorEqualsOrCount(``int` `N) ` `    ``{ ` `         `  `        ``// variable to store count of unset bits ` `        ``int` `count = 0; ` `        ``int` `bit; ` `        ``while` `(N > 0) { ` `             `  `            ``bit = N % 2; ` `            ``if` `(bit == 0) ` `                ``count++; ` `            ``N = N / 2; ` `        ``} ` `        ``return` `(``int``)Math.Pow(2, count); ` `    ``} ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``int` `N = 7; ` `        ``Console.WriteLine(xorEqualsOrCount(N)); ` `    ``} ` `} ` ` `  `// This code is contributed by inder_verma.. `

## PHP

 ` 0)  ` `    ``{  ` `        ``\$bit` `= ``\$N` `% 2;  ` `        ``if` `(``\$bit` `== 0)  ` `            ``\$count``++;  ` `        ``\$N` `= ``intval``(``\$N` `/ 2);  ` `    ``}  ` `    ``return` `pow(2, ``\$count``);  ` `}  ` ` `  `// Driver code  ` `\$N` `= 7;  ` `echo` `xorEqualsOrCount(``\$N``); ` ` `  `// This code is contributed ` `// by ChitraNayal ` `?> `

Output:

```1
``` My Personal Notes arrow_drop_up Check out this Author's contributed articles.

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

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.