# Binary representation of next number

Given a binary input that represents binary representation of positive number n, find binary representation of n+1.

The binary input may be and may not fit even in unsigned long long int.

Examples:

```Input : 10011
Output : 10100
Here n = (19)10 = (10011)2
next greater integer = (20)10 = (10100)2

Input : 111011101001111111
Output : 111011101010000000
```

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

We store input as string so that large numbers can be handled. We traverse the string from rightmost character and convert all 1s to 0s until we find a 0. Finally convert the found 0 to 1. If we do not find a 0, we append a 1 to overall string.

```string nextGreater(num)
l = num.length

// Find first 0 from right side. While
// searching, convert 1s to 0s
for i = l-1 to 0
if num[i] == '0'
num[i] = '1'
break
else
num[i] = '0'

// If there was no 0
if i < 0
num = '1' + num
return num
```

Below is the implementation of above idea.

## C++

 `// C++ implementation to find the binary ` `// representation of next greater integer ` `#include ` `using` `namespace` `std; ` ` `  `// function to find the required ` `// binary representation ` `string nextGreater(string num) ` `{ ` `    ``int` `l = num.size(); ` ` `  `    ``// examine bits from the right ` `    ``for` `(``int` `i=l-1; i>=0; i--) ` `    ``{ ` `        ``// if '0' is encountered, convert ` `        ``// it to '1' and then break ` `        ``if` `(num.at(i) == ``'0'``) ` `        ``{ ` `            ``num.at(i) = ``'1'``; ` `            ``break``; ` `        ``} ` ` `  `        ``// else convert '1' to '0' ` `        ``else` `            ``num.at(i) = ``'0'``; ` `    ``} ` ` `  `    ``// if the binary representation ` `    ``// contains only the set bits ` `    ``if` `(i < 0) ` `        ``num = ``"1"` `+ num; ` ` `  `    ``// final binary representation ` `    ``// of the required integer ` `    ``return` `num; ` `} ` ` `  `// Driver program to test above ` `int` `main() ` `{ ` `    ``string num = ``"10011"``; ` `    ``cout << ``"Binary representation of next number = "` `         ``<< nextGreater(num); ` `    ``return` `0; ` `}`

## Java

 `// Java implementation to find the binary ` `// representation of next greater integer ` ` `  `class` `GFG { ` ` `  `// function to find the required ` `// binary representation ` `    ``static` `String nextGreater(String num) { ` ` `  `        ``int` `l = num.length(); ` `        ``int` `i; ` `        ``// examine bits from the right ` `        ``for` `(i = l - ``1``; i >= ``0``; i--) { ` `            ``// if '0' is encountered, convert ` `            ``// it to '1' and then break ` `            ``if` `(num.charAt(i) == ``'0'``) { ` `                ``num = num.substring(``0``, i) + ``'1'` `+ num.substring(i+``1``); ` `                ``break``; ` `            ``} ``// else convert '1' to '0' ` `            ``else` `{ ` `                ``num = num.substring(``0``, i) + ``'0'` `+ num.substring(i + ``1``); ` `            ``} ` `            ``// num[i] = '0'; ` `        ``} ` ` `  `        ``// if the binary representation ` `        ``// contains only the set bits ` `        ``if` `(i < ``0``) { ` `            ``num = ``"1"` `+ num; ` `        ``} ` ` `  `        ``// final binary representation ` `        ``// of the required integer ` `        ``return` `num; ` `    ``} ` ` `  `// Driver program to test above ` `    ``public` `static` `void` `main(String[] args) { ` `        ``String num = ``"10011"``; ` `        ``System.out.println(``"Binary representation of next number = "` `                ``+ nextGreater(num)); ` `    ``} ` `} ` `//this code contributed by Rajput-Ji `

## Python3

 `# Python3 implementation to find the binary ` `# representation of next greater integer ` ` `  `# function to find the required ` `# binary representation ` `def` `nextGreater(num1): ` ` `  `    ``l ``=` `len``(num1); ` `    ``num ``=` `list``(num1); ` ` `  `    ``# examine bits from the right ` `    ``i ``=` `l``-``1``; ` `    ``while``(i >``=` `0``): ` `        ``# if '0' is encountered, convert ` `        ``# it to '1' and then break ` `        ``if` `(num[i] ``=``=` `'0'``): ` `            ``num[i] ``=` `'1'``; ` `            ``break``; ` ` `  `        ``# else convert '1' to '0' ` `        ``else``: ` `            ``num[i] ``=` `'0'``; ` `        ``i``-``=``1``; ` ` `  `    ``# if the binary representation ` `    ``# contains only the set bits ` `    ``num1 ``=` `''.join(num); ` `    ``if` `(i < ``0``): ` `        ``num1 ``=` `'1'` `+` `num1; ` ` `  `    ``# final binary representation ` `    ``# of the required integer ` `    ``return` `num1; ` ` `  `# Driver Code ` `num ``=` `"10011"``; ` `print``(``"Binary representation of next number = "``,nextGreater(num)); ` ` `  `# This code is contributed by mits `

## C#

 `     `  `// C# implementation to find the binary ` `// representation of next greater integer ` ` ``using` `System; ` `public` `class` `GFG { ` `  `  `// function to find the required ` `// binary representation ` `    ``static` `String nextGreater(String num) { ` `  `  `        ``int` `l = num.Length; ` `        ``int` `i; ` `        ``// examine bits from the right ` `        ``for` `(i = l - 1; i >= 0; i--) { ` `            ``// if '0' is encountered, convert ` `            ``// it to '1' and then break ` `            ``if` `(num[i] == ``'0'``) { ` `                ``num = num.Substring(0, i) + ``'1'` `+ num.Substring(i+1); ` `                ``break``; ` `            ``} ``// else convert '1' to '0' ` `            ``else` `{ ` `                ``num = num.Substring(0, i) + ``'0'` `+ num.Substring(i + 1); ` `            ``} ` `            ``// num[i] = '0'; ` `        ``} ` `  `  `        ``// if the binary representation ` `        ``// contains only the set bits ` `        ``if` `(i < 0) { ` `            ``num = ``"1"` `+ num; ` `        ``} ` `  `  `        ``// final binary representation ` `        ``// of the required integer ` `        ``return` `num; ` `    ``} ` `  `  `// Driver program to test above ` `    ``public` `static` `void` `Main() { ` `        ``String num = ``"10011"``; ` `        ``Console.WriteLine(``"Binary representation of next number = "` `                ``+ nextGreater(num)); ` `    ``} ` `} ` `//this code contributed by Rajput-Ji `

## PHP

 `= 0; ``\$i``--) ` `    ``{ ` `        ``// if '0' is encountered, convert ` `        ``// it to '1' and then break ` `        ``if` `(``\$num``[``\$i``] == ``'0'``) ` `        ``{ ` `            ``\$num``[``\$i``] = ``'1'``; ` `            ``break``; ` `        ``} ` ` `  `        ``// else convert '1' to '0' ` `        ``else` `            ``\$num``[``\$i``] = ``'0'``; ` `    ``} ` ` `  `    ``// if the binary representation ` `    ``// contains only the set bits ` `    ``if` `(``\$i` `< 0) ` `        ``\$num` `= ``"1"` `. ``\$num``; ` ` `  `    ``// final binary representation ` `    ``// of the required integer ` `    ``return` `\$num``; ` `} ` ` `  `// Driver Code ` `\$num` `= ``"10011"``; ` `echo` `"Binary representation of next number = "` `. ` `                              ``nextGreater(``\$num``); ` ` `  `// This code is contributed by ita_c ` `?> `

Output:

```Binary representation of next number = 10100
```

Time Complexity : O(n) where n is number of bits in input.

This article is contributed by Ayush Jauhari. 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.

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

Article Tags :
Practice Tags :

2

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.