# Binary representation of next number

• Difficulty Level : Easy
• Last Updated : 11 Jul, 2022

Given a binary input that represents binary representation of positive number n, find a 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 ```

We store input as a string so that large numbers can be handled. We traverse the string from the 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 the 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 the 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``?>`

## Javascript

 ``

Output

`Binary representation of next number = 10100`

Time Complexity: O(n) where n is the number of bits in the input.
Auxiliary Space: O(n), since the string gets copied when we pass it to a function.

This article is contributed by Ayush Jauhari. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

My Personal Notes arrow_drop_up