Related Articles
Check if actual binary representation of a number is palindrome
• Difficulty Level : Hard
• Last Updated : 18 Apr, 2018

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.

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.

My Personal Notes arrow_drop_up
Recommended Articles
Page :