 GFG App
Open App Browser
Continue

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

 ``

## Javascript

 ``

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

 ``

## Javascript

 ``

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/