Check if two numbers are equal without using arithmetic and comparison operators (original) (raw)

Last Updated : 04 Dec, 2023

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

PHP

`

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

PHP

`

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

// CPP code for the above approach #include 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

`

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