Skip to content
Related Articles

Related Articles

Improve Article

Bitwise Operations on Digits of a Number

  • Last Updated : 14 Aug, 2021

Given a number N, the task is to perform the bitwise operations on digits of the given number N. The bitwise operations include: 
 

  • Finding the XOR of all digits of the given number N
  • Finding the OR of all digits of the given number N
  • Finding the AND of all digits of the given number N

Examples: 
 

Input: N = 486
Output: 
XOR = 10
OR = 14
AND = 0

Input: N = 123456
Output: 
XOR = 10
OR = 14
AND = 0

 

Approach:
 

  1. Get the number 
     
  2. Find the digits of the number and store it in an array for computation purpose. 
     
  3. Now perform the various bitwise operations (XOR, OR, and AND) on this array one by one.

Below is the implementation of the above approach: 
 



C++




// C++ implementation of the approach
 
#include <bits/stdc++.h>
using namespace std;
 
int digit[100000];
 
// Function to find the digits
int findDigits(int n)
{
    int count = 0;
 
    while (n != 0) {
 
        digit[count] = n % 10;
        n = n / 10;
        ++count;
    }
 
    return count;
}
 
// Function to Find OR
// of all digits of a number
int OR_of_Digits(int n, int count)
{
 
    int ans = 0;
 
    for (int i = 0; i < count; i++) {
        // Find OR of all digits
        ans = ans | digit[i];
    }
 
    // return OR of digits
    return ans;
}
 
// Function to Find AND
// of all digits of a number
int AND_of_Digits(int n, int count)
{
 
    int ans = 0;
 
    for (int i = 0; i < count; i++) {
        // Find AND of all digits
        ans = ans & digit[i];
    }
 
    // return AND of digits
    return ans;
}
 
// Function to Find XOR
// of all digits of a number
int XOR_of_Digits(int n, int count)
{
 
    int ans = 0;
 
    for (int i = 0; i < count; i++) {
        // Find XOR of all digits
        ans = ans ^ digit[i];
    }
 
    // return XOR of digits
    return ans;
}
 
// Driver code
void bitwise_operation(int N)
{
 
    // Find and store all digits
    int countOfDigit = findDigits(N);
 
    // Find XOR of digits
    cout << "XOR = "
         << XOR_of_Digits(N, countOfDigit)
         << endl;
 
    // Find OR of digits
    cout << "OR = "
         << OR_of_Digits(N, countOfDigit)
         << endl;
 
    // Find AND of digits
    cout << "AND = "
         << AND_of_Digits(N, countOfDigit)
         << endl;
}
 
// Driver code
int main()
{
 
    int N = 123456;
 
    bitwise_operation(N);
 
    return 0;
}

Java




// Java implementation of the approach
import java.util.*;
 
class GFG{
 
static int []digit = new int[100000];
 
// Function to find the digits
static int findDigits(int n)
{
    int count = 0;
 
    while (n != 0) {
 
        digit[count] = n % 10;
        n = n / 10;
        ++count;
    }
 
    return count;
}
 
// Function to Find OR
// of all digits of a number
static int OR_of_Digits(int n, int count)
{
 
    int ans = 0;
 
    for (int i = 0; i < count; i++) {
         
        // Find OR of all digits
        ans = ans | digit[i];
    }
 
    // return OR of digits
    return ans;
}
 
// Function to Find AND
// of all digits of a number
static int AND_of_Digits(int n, int count)
{
 
    int ans = 0;
 
    for (int i = 0; i < count; i++) {
         
        // Find AND of all digits
        ans = ans & digit[i];
    }
 
    // return AND of digits
    return ans;
}
 
// Function to Find XOR
// of all digits of a number
static int XOR_of_Digits(int n, int count)
{
 
    int ans = 0;
 
    for (int i = 0; i < count; i++) {
         
        // Find XOR of all digits
        ans = ans ^ digit[i];
    }
 
    // return XOR of digits
    return ans;
}
 
// Driver code
static void bitwise_operation(int N)
{
 
    // Find and store all digits
    int countOfDigit = findDigits(N);
 
    // Find XOR of digits
    System.out.print("XOR = "
        + XOR_of_Digits(N, countOfDigit)
        +"\n");
 
    // Find OR of digits
    System.out.print("OR = "
        + OR_of_Digits(N, countOfDigit)
        +"\n");
 
    // Find AND of digits
    System.out.print("AND = "
        + AND_of_Digits(N, countOfDigit)
        +"\n");
}
 
// Driver code
public static void main(String[] args)
{
 
    int N = 123456;
 
    bitwise_operation(N);
}
}
 
// This code is contributed by sapnasingh4991

Python 3




# Python 3 implementation of the approach
digit = [0]*(100000)
 
# Function to find the digits
def findDigits(n):
    count = 0
 
    while (n != 0):
 
        digit[count] = n % 10;
        n = n // 10;
        count += 1
 
    return count
 
# Function to Find OR
# of all digits of a number
def OR_of_Digits( n,count):
    ans = 0
 
    for i in range(count):
         
        # Find OR of all digits
        ans = ans | digit[i]
 
    # return OR of digits
    return ans
 
# Function to Find AND
# of all digits of a number
def AND_of_Digits(n, count):
 
    ans = 0
 
    for i in range(count):
         
        # Find AND of all digits
        ans = ans & digit[i]
 
    # return AND of digits
    return ans
 
# Function to Find XOR
# of all digits of a number
def XOR_of_Digits(n, count):
 
    ans = 0
 
    for i in range(count):
         
        # Find XOR of all digits
        ans = ans ^ digit[i]
 
    # return XOR of digits
    return ans
 
# Driver code
def bitwise_operation( N):
 
    # Find and store all digits
    countOfDigit = findDigits(N)
 
    # Find XOR of digits
    print("XOR = ",XOR_of_Digits(N, countOfDigit))
 
    # Find OR of digits
    print("OR = ",OR_of_Digits(N, countOfDigit))
 
    # Find AND of digits
    print("AND = ",AND_of_Digits(N, countOfDigit))
 
# Driver code
N = 123456;
bitwise_operation(N)
 
# This code is contributed by apurva raj

C#




// C# implementation of the approach
using System;
 
class GFG{
  
static int []digit = new int[100000];
  
// Function to find the digits
static int findDigits(int n)
{
    int count = 0;
  
    while (n != 0) {
  
        digit[count] = n % 10;
        n = n / 10;
        ++count;
    }
  
    return count;
}
  
// Function to Find OR
// of all digits of a number
static int OR_of_Digits(int n, int count)
{
  
    int ans = 0;
  
    for (int i = 0; i < count; i++) {
          
        // Find OR of all digits
        ans = ans | digit[i];
    }
  
    // return OR of digits
    return ans;
}
  
// Function to Find AND
// of all digits of a number
static int AND_of_Digits(int n, int count)
{
  
    int ans = 0;
  
    for (int i = 0; i < count; i++) {
          
        // Find AND of all digits
        ans = ans & digit[i];
    }
  
    // return AND of digits
    return ans;
}
  
// Function to Find XOR
// of all digits of a number
static int XOR_of_Digits(int n, int count)
{
  
    int ans = 0;
  
    for (int i = 0; i < count; i++) {
          
        // Find XOR of all digits
        ans = ans ^ digit[i];
    }
  
    // return XOR of digits
    return ans;
}
  
// Driver code
static void bitwise_operation(int N)
{
  
    // Find and store all digits
    int countOfDigit = findDigits(N);
  
    // Find XOR of digits
    Console.Write("XOR = "
        + XOR_of_Digits(N, countOfDigit)
        +"\n");
  
    // Find OR of digits
    Console.Write("OR = "
        + OR_of_Digits(N, countOfDigit)
        +"\n");
  
    // Find AND of digits
    Console.Write("AND = "
        + AND_of_Digits(N, countOfDigit)
        +"\n");
}
  
// Driver code
public static void Main(String[] args)
{
  
    int N = 123456;
  
    bitwise_operation(N);
}
}
 
// This code is contributed by 29AjayKumar

Javascript




<script>
 
// Javascript implementation of the approach
 
let digit = [];
   
// Function to find the digits
function findDigits(n)
{
    let count = 0;
   
    while (n != 0) {
   
        digit[count] = n % 10;
        n = n / 10;
        ++count;
    }
   
    return count;
}
   
// Function to Find OR
// of all digits of a number
function OR_of_Digits(n, count)
{
   
    let ans = 0;
   
    for (let i = 0; i < count; i++) {
           
        // Find OR of all digits
        ans = ans | digit[i];
    }
   
    // return OR of digits
    return ans;
}
   
// Function to Find AND
// of all digits of a number
function AND_of_Digits(n, count)
{
   
    let ans = 0;
   
    for (let i = 0; i < count; i++) {
           
        // Find AND of all digits
        ans = ans & digit[i];
    }
   
    // return AND of digits
    return ans;
}
   
// Function to Find XOR
// of all digits of a number
function XOR_of_Digits(n, count)
{
   
    let ans = 0;
   
    for (let i = 0; i < count; i++) {
           
        // Find XOR of all digits
        ans = ans ^ digit[i];
    }
   
    // return XOR of digits
    return ans;
}
   
// Driver code
function bitwise_operation(N)
{
   
    // Find and store all digits
    let countOfDigit = findDigits(N);
   
    // Find XOR of digits
    document.write("XOR = "
        + XOR_of_Digits(N, countOfDigit)
         + "<br/>");
   
    // Find OR of digits
    document.write("OR = "
        + OR_of_Digits(N, countOfDigit)
        + "<br/>");
   
    // Find AND of digits
    document.write("AND = "
        + AND_of_Digits(N, countOfDigit)
        + "<br/>");
}
 
// Driver Code
 
    let N = 123456;
   
    bitwise_operation(N);
 
</script>
Output: 
XOR = 7
OR = 7
AND = 0

 

Time Complexity: O(logN)
Auxiliary Space: O(logN)

Attention reader! Don’t stop learning now. Join the First-Step-to-DSA Course for Class 9 to 12 students , specifically designed to introduce data structures and algorithms to the class 9 to 12 students




My Personal Notes arrow_drop_up
Recommended Articles
Page :