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.

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to find 
// the XOR equals OR count 
#include<iostream>
#include<math.h>
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<<g.xorEqualsOrCount(N);
        return 0;
    
  
  
// This code is contributed by Soumik 

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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));
    }
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


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.