Given a non-negative integer n. The problem is to check if binary representation of n is palindrome or not. Note that the actual binary representation of the number is being considered for palindrome checking, no leading 0’s are being considered.
Examples :
Input : 9 Output : Yes (9)10 = (1001)2 Input : 10 Output : No (10)10 = (1010)2
Approach: Following are the steps:
- Get the number obtained by reversing the bits in the binary representation of n. Refer this post. Let it be rev.
- If n == rev, then print “Yes” else “No”.
Implementation:
C++
// C++ implementation to check whether binary // representation of a number is palindrome or not #include <bits/stdc++.h> using namespace std;
// function to reverse bits of a number unsigned int reverseBits(unsigned int n)
{ unsigned int rev = 0;
// traversing bits of 'n' from the right
while (n > 0) {
// bitwise left shift 'rev' by 1
rev <<= 1;
// if current bit is '1'
if (n & 1 == 1)
rev ^= 1;
// bitwise right shift 'n' by 1
n >>= 1;
}
// required number
return rev;
} // function to check whether binary representation // of a number is palindrome or not bool isPalindrome(unsigned int n)
{ // get the number by reversing bits in the
// binary representation of 'n'
unsigned int rev = reverseBits(n);
return (n == rev);
} // Driver program to test above int main()
{ unsigned int n = 9;
if (isPalindrome(n))
cout << "Yes" ;
else
cout << "No" ;
return 0;
} |
Java
// Java code to check whether // binary representation of a // number is palindrome or not import java.util.*;
import java.lang.*;
public class GfG
{ // function to reverse bits of a number
public static long reverseBits( long n)
{
long rev = 0 ;
// traversing bits of 'n'
// from the right
while (n > 0 )
{
// bitwise left shift 'rev' by 1
rev <<= 1 ;
// if current bit is '1'
if ((n & 1 ) == 1 )
rev ^= 1 ;
// bitwise right shift 'n' by 1
n >>= 1 ;
}
// required number
return rev;
}
// function to check a number
// is palindrome or not
public static boolean isPalindrome( long n)
{
// get the number by reversing
// bits in the binary
// representation of 'n'
long rev = reverseBits(n);
return (n == rev);
}
// Driver function
public static void main(String argc[])
{
long n = 9 ;
if (isPalindrome(n))
System.out.println( "Yes" );
else
System.out.println( "No" );
}
} // This code is contributed by Sagar Shukla |
Python3
# Python 3 implementation to check # whether binary representation of # a number is palindrome or not # function to reverse bits of a number def reverseBits(n) :
rev = 0
# traversing bits of 'n' from the right
while (n > 0 ) :
# bitwise left shift 'rev' by 1
rev = rev << 1
# if current bit is '1'
if (n & 1 = = 1 ) :
rev = rev ^ 1
# bitwise right shift 'n' by 1
n = n >> 1
# required number
return rev
# function to check whether binary # representation of a number is # palindrome or not def isPalindrome(n) :
# get the number by reversing
# bits in the binary
# representation of 'n'
rev = reverseBits(n)
return (n = = rev)
# Driver program to test above n = 9
if (isPalindrome(n)) :
print ( "Yes" )
else :
print ( "No" )
# This code is contributed by Nikita Tiwari. |
C#
// C# code to check whether // binary representation of a // number is palindrome or not using System;
public class GfG
{ // function to reverse bits of a number
public static long reverseBits( long n)
{
long rev = 0;
// traversing bits of 'n'
// from the right
while (n > 0)
{
// bitwise left shift 'rev' by 1
rev <<= 1;
// if current bit is '1'
if ((n & 1) == 1)
rev ^= 1;
// bitwise right shift 'n' by 1
n >>= 1;
}
// required number
return rev;
}
// function to check a number
// is palindrome or not
public static bool isPalindrome( long n)
{
// get the number by reversing
// bits in the binary
// representation of 'n'
long rev = reverseBits(n);
return (n == rev);
}
// Driver function
public static void Main()
{
long n = 9;
if (isPalindrome(n))
Console.WriteLine( "Yes" );
else
Console.WriteLine( "No" );
}
} // This code is contributed by vt_m |
PHP
<?php // PHP implementation to check // whether binary representation // of a number is palindrome or not // function to reverse bits of a number function reverseBits( $n )
{ $rev = 0;
// traversing bits of 'n'
// from the right
while ( $n > 0)
{
// bitwise left shift 'rev' by 1
$rev <<= 1;
// if current bit is '1'
if ( $n & 1 == 1)
$rev ^= 1;
// bitwise right shift 'n' by 1
$n >>= 1;
}
// required number
return $rev ;
} // function to check whether // binary representation of a // number is palindrome or not function isPalindrome( $n )
{ // get the number by reversing
// bits in the binary representation
// of 'n'
$rev = reverseBits( $n );
return ( $n == $rev );
} // Driver code $n = 9;
if (isPalindrome( $n ))
echo "Yes" ;
else echo "No" ;
return 0;
// This code is contributed by mits ?> |
Javascript
<script> // JavaScript program to check whether // binary representation of a // number is palindrome or not // function to reverse bits of a number
function reverseBits(n)
{
let rev = 0;
// traversing bits of 'n'
// from the right
while (n > 0)
{
// bitwise left shift 'rev' by 1
rev <<= 1;
// if current bit is '1'
if ((n & 1) == 1)
rev ^= 1;
// bitwise right shift 'n' by 1
n >>= 1;
}
// required number
return rev;
}
// function to check a number
// is palindrome or not
function isPalindrome(n)
{
// get the number by reversing
// bits in the binary
// representation of 'n'
let rev = reverseBits(n);
return (n == rev);
}
// Driver code let n = 9;
if (isPalindrome(n))
document.write( "Yes" );
else
document.write( "No" );
</script> |
Output
Yes
Time Complexity: O(num), where num is the number of bits in the binary representation of n.
Auxiliary Space: O(1).