# Check if actual binary representation of a number is palindrome

• Difficulty Level : Hard
• Last Updated : 08 Apr, 2021

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

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”.

## C++

 `// C++ implementation to check whether binary``// representation of a number is palindrome or not``#include ``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

 ` 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

 ``

Output :

`Yes`

Time Complexity: O(num), where num is the number of bits in the binary representation of n.

My Personal Notes arrow_drop_up