Thursday, December 26, 2024
Google search engine
HomeLanguagesJavaCheck if two numbers are equal without using arithmetic and comparison operators

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

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


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


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>


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


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


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>


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.

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


Output

True
False

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

Source: https://www.geeksforgeeks.org/count-of-n-digit-numbers-whose-sum-of-digits-equals-to-given-sum/
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above

RELATED ARTICLES

Most Popular

Recent Comments