Open In App

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

Last Updated : 04 Dec, 2023
Suggest changes
Share
Like Article
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: https://www.geeksforgeeks.org/count-of-n-digit-numbers-whose-sum-of-digits-equals-to-given-sum/


Next Article

Similar Reads

Article Tags :
Practice Tags :