Horje
Check if actual binary representation of a number is palindrome

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:

  1. Get the number obtained by reversing the bits in the binary representation of n. Refer this post. Let it be rev.
  2. If n == rev, then print “Yes” else “No”.

Implementation:

C++

<?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).




Reffered: https://www.geeksforgeeks.org


Bit Magic

Related
Reverse actual bits of the given number Reverse actual bits of the given number
Odious number Odious number
Set the Left most unset bit Set the Left most unset bit
Odious number Odious number
Set the Left most unset bit Set the Left most unset bit

Type:
Geek
Category:
Coding
Sub Category:
Tutorial
Uploaded by:
Admin
Views:
17