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

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
Recommended Articles
Page :