Check if two numbers are equal without using arithmetic and comparison operators
Last Updated : 04 Dec, 2023
Improve
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++ 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 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 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# 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
<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 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++ 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 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 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# 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
<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 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.
// 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 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
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
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
// 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/