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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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

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 Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : Mithun Kumar