# Length of the Longest Consecutive 1s in Binary Representation

• Difficulty Level : Medium
• Last Updated : 14 Sep, 2022

Given a number N, The task is to find the length of the longest consecutive 1s series in its binary representation.
Examples :

Input: N = 14
Output: 3
Explanation: The binary representation of 14 is 1110.

Input: N = 222
Output: 4
Explanation: The binary representation of 222 is 11011110.

Naive Approach: Below is the idea to solve the problem

Traverse the bits of binary representation of N and keep a track of the number of consecutive set bits, and the maximum length of consecutive 1s found so far.

Time Complexity: O(X), Here X is the length of binary representation of N.
Auxiliary Space: O(1)

## Find the length of the longest consecutive 1sseries using Bit Magic:

Below is the idea to solve the problem:

The idea is based on the concept that the AND of bit sequence with a left shifted by 1 version of itself effectively removes the trailing 1 from every sequence of consecutive 1s.

So the operation N = (N & (N << 1)) reduces length of every sequence of 1s by one in binary representation of N. If we keep doing this operation in a loop, we end up with N = 0. The number of iterations required to reach 0 is actually length of the longest consecutive sequence of 1s.

Illustration:

11101111   (x)

& 11011110   (x << 1)

—————————

11001110   (x & (x << 1))

^         ^
|           |

Trailing 1 removed

Follow the below steps to implement the above approach:

• Create a variable count initialized with value 0.
• Run a while loop till N is not 0.
• In each iteration perform the operation N = (N & (N << 1))
• Increment count by one.
• Return count

Below is the Implementation of above approach:

## C++

 `// C++ program to find length of the longest``// consecutive 1s in binary representation of``// a number.``#include``using` `namespace` `std;` `int` `maxConsecutiveOnes(``int` `x)``{``    ``// Initialize result``    ``int` `count = 0;` `    ``// Count the number of iterations to``    ``// reach x = 0.``    ``while` `(x!=0)``    ``{``        ``// This operation reduces length``        ``// of every sequence of 1s by one.``        ``x = (x & (x << 1));` `        ``count++;``    ``}` `    ``return` `count;``}` `// Driver code``int` `main()``{``    ``// Function Call``    ``cout << maxConsecutiveOnes(14) << endl;``    ``cout << maxConsecutiveOnes(222) << endl;``    ``return` `0;``}`

## Java

 `// Java program to find length of the longest``// consecutive 1s in binary representation of``// a number.``class` `MaxConsecutiveOnes``{``    ``private` `static` `int` `maxConsecutiveOnes(``int` `x)``    ``{``        ``// Initialize result``        ``int` `count = ``0``;` `        ``// Count the number of iterations to``        ``// reach x = 0.``        ``while` `(x!=``0``)``        ``{``            ``// This operation reduces length``            ``// of every sequence of 1s by one.``            ``x = (x & (x << ``1``));` `            ``count++;``        ``}` `        ``return` `count;``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String strings[])``    ``{``        ``System.out.println(maxConsecutiveOnes(``14``));``        ``System.out.println(maxConsecutiveOnes(``222``));``    ``}``}`

## Python3

 `# Python program to find``# length of the longest``# consecutive 1s in``# binary representation of``# a number.` `def` `maxConsecutiveOnes(x):` `    ``# Initialize result``    ``count ``=` `0`` ` `    ``# Count the number of iterations to``    ``# reach x = 0.``    ``while` `(x!``=``0``):``    ` `        ``# This operation reduces length``        ``# of every sequence of 1s by one.``        ``x ``=` `(x & (x << ``1``))`` ` `        ``count``=``count``+``1``    ` `    ``return` `count` `# Driver code` `print``(maxConsecutiveOnes(``14``))``print``(maxConsecutiveOnes(``222``))` `# This code is contributed``# by Anant Agarwal.`

## C#

 `// C# program to find length of the``// longest consecutive 1s in binary``// representation of a number.``using` `System;` `class` `GFG {``    ` `    ``// Function to find length of the``    ``// longest consecutive 1s in binary``    ``// representation of a number``    ``private` `static` `int` `maxConsecutiveOnes(``int` `x)``    ``{``        ` `        ``// Initialize result``        ``int` `count = 0;` `        ``// Count the number of iterations``        ``// to reach x = 0.``        ``while` `(x != 0)``        ``{``            ` `            ``// This operation reduces length``            ``// of every sequence of 1s by one.``            ``x = (x & (x << 1));` `            ``count++;``        ``}` `        ``return` `count;``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``Console.WriteLine(maxConsecutiveOnes(14));``        ``Console.Write(maxConsecutiveOnes(222));``    ``}``}` `// This code is contributed by Nitin Mittal.`

## PHP

 ``

## Javascript

 ``

Output

```3
4```

Time Complexity: O(log X), Here X is the length of binary representation of N
Auxiliary Space: O(1)

This article is contributed by Pankaj Kumar. 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.