Open In App

Check if two numbers are equal without using arithmetic and comparison operators

Last Updated : 23 Jul, 2025
Comments
Improve
Suggest changes
4 Likes
Like
Report

Given two numbers, the task is to check if two numbers are equal without using Arithmetic and Comparison Operators or String functions.

Method 1 : The idea is to use XOR operator. XOR of two numbers is 0 if the numbers are the same, otherwise non-zero. 

C++
// C++ program to check if two numbers
// are equal without using arithmetic
// and comparison operators
#include <iostream>
using namespace std;

// Function to check if two
// numbers are equal using
// XOR operator
void areSame(int a, int b)
{
    if (a ^ b)
        cout << "Not Same";
    else
        cout << "Same";
}

// Driver Code
int main()
{

    // Calling function
    areSame(10, 20);
}
Java Python3 C# JavaScript PHP

Output
Not Same

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

Method 2 : Here idea is using complement ( ~ ) and bit-wise '&' operator. 

C++
// C++ program to check if two numbers
// are equal without using arithmetic
// and comparison operators
#include <iostream>
using namespace std;

// Function to check if two
// numbers are equal using
// using ~ complement and & operator.
void areSame(int a, int b)
{
    if ((a & ~b) == 0)
        cout << "Same";
    else
        cout << "Not Same";
}
// Driver Code
int main()
{

    // Calling function
    areSame(10, 20);
  
  // This Code is improved by Sonu Kumar Pandit
}
Java Python3 C# JavaScript PHP

Output
Not Same

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

Using bit manipulation:

Approach:

Another approach is to use bit manipulation to compare each bit of the two numbers. We can use the bit-shift operators to extract each bit and compare them one by one.

  • Define a function named is_equal that takes two arguments num1 and num2.
  • Initialize a variable mask to 1.
  • Loop through the range of 32 bits (assuming 32-bit integers).
  • Use the bitwise AND operator (&) to extract the i-th bit of num1 and num2.
  • Compare the extracted bits using the not equal to operator (!=).
  • If the extracted bits are not equal, return False.
  • Shift the mask left by one bit using the left shift operator (<<).
  • Return True if all bits are equal.
C++
// CPP code for the above approach
#include <iostream>
using namespace std;

bool isEqual(int num1, int num2)
{
    int mask = 1;
    for (int i = 0; i < 32;
         i++) { // assuming 32-bit integers
        if ((num1 & mask) != (num2 & mask)) {
            return false;
        }
        mask <<= 1;
    }
    return true;
}

int main()
{
    // Example usage
    cout << (isEqual(10, 10) ? "True" : "False") << endl; // Output: 1 (true)
    cout << (isEqual(10, 20) ? "True" : "False") << endl; // Output: 0 (false)

    return 0;
}

// This code is contributed by Susobhan Akhuli
Java Python3 C# JavaScript

Output
True
False

Time complexity: O(log n)
Space complexity: O(1)


Source: https://www.geeksforgeeks.org/dsa/count-of-n-digit-numbers-whose-sum-of-digits-equals-to-given-sum/


Article Tags :
Practice Tags :

Similar Reads