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
// Java program to check if two numbers
// are equal without using arithmetic
// and comparison operators
class GFG {

    // Function to check if two
    // numbers are equal using
    // XOR operator
    static void areSame(int a, int b)
    {
        if ((a ^ b) != 0)
            System.out.print("Not Same");
        else
            System.out.print("Same");
    }

    // Driver Code
    public static void main(String[] args)
    {

        // Calling function
        areSame(10, 20);
    }
}

// This code is contributed by Smitha
Python3
# Python3 program to check if two numbers
# are equal without using arithmetic
# and comparison operators

def areSame(a, b):

# Function to check if two
# numbers are equal using 
# XOR operator
 if ((a ^ b) != 0):
    print("Not Same") 
 else:
    print("Same")

# Driver Code

areSame(10, 20)

# This code is contributed by Smitha
C#
// C# program to check if two numbers
// are equal without using arithmetic
// and comparison operators
using System;

class GFG {

    // Function to check if two
    // numbers are equal using
    // XOR operator
    static void areSame(int a, int b)
    {
        if ((a ^ b) != 0)
            Console.Write("Not Same");
        else
            Console.Write("Same");
    }

    // Driver Code
    public static void Main(String[] args)
    {

        // Calling function
        areSame(10, 20);
    }
}

// This code is contributed by Smitha
JavaScript
<script>

// Javascript program to check if two numbers
// are equal without using arithmetic and 
// comparison operators   

// Function to check if two
// numbers are equal using
// XOR operator
function areSame(a, b)
{
    if ((a ^ b) != 0)
        document.write("Not Same");
    else
        document.write("Same");
}

// Driver Code
areSame(10, 20);

// This code is contributed by shikhasingrajput 

</script>
PHP
<?php
// PHP program to check if 
// two numbers are equal 
// without using arithmetic 
// and comparison operators

// Function to check if two
// numbers are equal using 
// XOR operator
function areSame($a, $b)
{
if ($a ^ $b) 
echo "Not Same"; 
else
echo "Same";
}

// Driver Code

// Calling function
areSame(10, 20);

// This code is contributed
// by nitin mittal.
?>

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
// Java program to check if two numbers
// are equal without using arithmetic
// and comparison operators

class GFG {
    // Function to check if two
    // numbers are equal using
    // using ~ complement and & operator.
    static void areSame(int a, int b)
    {
        if ((a & ~b) == 0 && (~a & b) == 0)
            System.out.print("Same");
        else
            System.out.print("Not Same");
    }

    // Driver Code
    public static void main(String args[])
    {
        // Calling function
        areSame(10, 20);
    }
}

// This code is contributed
// by Akanksha Rai
Python3
# Python3 program to check if two numbers
# are equal without using arithmetic
# and comparison operators

# Function to check if two
# numbers are equal using
# using ~ complement and & operator.


def areSame(a, b):
    if ((a & ~b) == 0 and (~a & b) == 0):
        print("Same")
    else:
        print("Not Same")


# Calling function
areSame(10, 20)

# This code is contributed by Rajput-Ji
C#
// C# program to check if two numbers
// are equal without using arithmetic
// and comparison operators
using System;

class GFG {
    // Function to check if two
    // numbers are equal using
    // using ~ complement and & operator.
    static void areSame(int a, int b)
    {
        if ((a & ~b) == 0 && (~a & b) == 0)
            Console.Write("Same");
        else
            Console.Write("Not Same");
    }

    // Driver Code
    public static void Main()
    {
        // Calling function
        areSame(10, 20);
    }
}

// This code is contributed
// by Akanksha Rai
JavaScript
<script>

// Javascript program to check if two numbers
// are equal without using arithmetic
// and comparison operators

// Function to check if two
// Numbers are equal using
// using ~ complement and & operator.
function areSame(a, b)
{
    if ((a & ~b) == 0 && (~a & b) == 0)
        document.write("Same");
    else
        document.write("Not Same");
}

// Driver Code

// Calling function
areSame(10, 20);

// This code is contributed by gauravrajput1 

</script>
PHP
<?php
// PHP program to check if two numbers
// are equal without using arithmetic
// and comparison operators

// Function to check if two
// numbers are equal using 
// using ~ complement and & operator.
function areSame($a, $b)
{
    if (($a & ~$b)==0 && (~$a & $b)==0) 
        echo "Same"; 
    else
        echo "Not Same";
}

// Driver Code
// Calling function
areSame(10, 20);

// This code is contributed by ita_c
?>

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
// Java code for the above approach

public class GFG {
    // Function to check if two numbers have equal binary
    // representation
    static boolean 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;
    }

    // Main method to demonstrate the usage
    public static void main(String[] args)
    {
        // Example usage
        System.out.println(isEqual(10, 10)
                               ? "True"
                               : "False"); // Output: true
        System.out.println(isEqual(10, 20)
                               ? "True"
                               : "False"); // Output: false
    }
}

// This code is contributed by Susobhan Akhuli
Python3
def is_equal(num1, num2):
    mask = 1
    for i in range(32):  # assuming 32-bit integers
        if (num1 & mask) != (num2 & mask):
            return False
        mask <<= 1
    return True

# Example usage
print(is_equal(10, 10))  # Output: True
print(is_equal(10, 20))  # Output: False
C#
using System;

class Program
{
    static bool IsEqual(int num1, int num2)
    {
        int mask = 1;

        for (int i = 0; i < 32; i++) // assuming 32-bit integers
        {
            // If the bits at the current position are different, return false
            if ((num1 & mask) != (num2 & mask))
            {
                return false;
            }

            mask <<= 1;
        }

        // All corresponding bits are equal, return true
        return true;
    }

    static void Main()
    {
        // Example usage
        Console.WriteLine(IsEqual(10, 10) ? "True" : "False"); // Output: True
        Console.WriteLine(IsEqual(10, 20) ? "True" : "False"); // Output: False
    }
}
// This code is contributed by shivamgupta310570
JavaScript
// Function to check if two numbers have equal binary representation
function isEqual(num1, num2) {
    let mask = 1;
    for (let i = 0; i < 32; i++) { // assuming 32-bit integers
        if ((num1 & mask) !== (num2 & mask)) {
            return false;
        }
        mask <<= 1;
    }
    return true;
}

// Main method to demonstrate the usage
console.log(isEqual(10, 10) ? "True" : "False"); // Output: true
console.log(isEqual(10, 20) ? "True" : "False"); // Output: false

Output
True
False

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


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


Article Tags :

Explore