# Highest power of 2 that divides a number represented in binary

Given a binary string str, the task is to find the largest power of 2 that divides the decimal equivalent of the given binary number.

Examples:

Input: str = “100100”
Output: 2
22 = 4 is the highest power of 2 that divides 36 (100100).

Input: str = “10010”
Output: 1

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

Approach: Starting from the right, count the number of 0s in the binary representation which is the highest power of 2 which will divide the number.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function to return the highest power of 2 ` `// which divides the given binary number ` `int` `highestPower(string str, ``int` `len) ` `{ ` ` `  `    ``// To store the highest required power of 2 ` `    ``int` `ans = 0; ` ` `  `    ``// Counting number of consecutive zeros ` `    ``// from the end in the given binary string ` `    ``for` `(``int` `i = len - 1; i >= 0; i--) { ` `        ``if` `(str[i] == ``'0'``) ` `            ``ans++; ` `        ``else` `            ``break``; ` `    ``} ` ` `  `    ``return` `ans; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``string str = ``"100100"``; ` `    ``int` `len = str.length(); ` `    ``cout << highestPower(str, len); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java implementation of the approach ` `class` `GFG ` `{ ` `     `  `// Function to return the highest power of 2 ` `// which divides the given binary number ` `static` `int` `highestPower(String str, ``int` `len) ` `{ ` ` `  `    ``// To store the highest required power of 2 ` `    ``int` `ans = ``0``; ` ` `  `    ``// Counting number of consecutive zeros ` `    ``// from the end in the given binary string ` `    ``for` `(``int` `i = len - ``1``; i >= ``0``; i--)  ` `    ``{ ` `        ``if` `(str.charAt(i) == ``'0'``) ` `            ``ans++; ` `        ``else` `            ``break``; ` `    ``} ` ` `  `    ``return` `ans; ` `} ` ` `  `// Driver code ` `public` `static` `void` `main(String[] args) ` `{ ` `    ``String str = ``"100100"``; ` `    ``int` `len = str.length(); ` `    ``System.out.println(highestPower(str, len)); ` `} ` `} ` ` `  `// This code is contributed by Code_Mech. `

## Python3

 `# Python3 implementation of the approach ` ` `  `# Function to return the highest power of 2 ` `# which divides the given binary number ` `def` `highestPower(``str``, lenngth): ` ` `  `    ``# To store the highest required power of 2 ` `    ``ans ``=` `0``; ` ` `  `    ``# Counting number of consecutive zeros ` `    ``# from the end in the given binary string ` `    ``for` `i ``in` `range``(lenngth``-``1``,``-``1``,``-``1``): ` `        ``if` `(``str``[i] ``=``=` `'0'``): ` `            ``ans``+``=``1``; ` `        ``else``: ` `            ``break``; ` `    ``return` `ans; ` ` `  `# Driver code ` `def` `main(): ` `    ``str` `=` `"100100"``; ` `    ``lenngth ``=` `len``(``str``); ` `    ``print``(highestPower(``str``, lenngth)); ` ` `  `if` `__name__ ``=``=` `'__main__'``: ` `    ``main() ` ` `  `# This code contributed by PrinciRaj1992 `

## C#

 `// C# implementation of the approach ` `using` `System; ` `     `  `class` `GFG ` `{ ` `     `  `// Function to return the highest power of 2 ` `// which divides the given binary number ` `static` `int` `highestPower(String str, ``int` `len) ` `{ ` ` `  `    ``// To store the highest required power of 2 ` `    ``int` `ans = 0; ` ` `  `    ``// Counting number of consecutive zeros ` `    ``// from the end in the given binary string ` `    ``for` `(``int` `i = len - 1; i >= 0; i--)  ` `    ``{ ` `        ``if` `(str[i] == ``'0'``) ` `            ``ans++; ` `        ``else` `            ``break``; ` `    ``} ` ` `  `    ``return` `ans; ` `} ` ` `  `// Driver code ` `public` `static` `void` `Main(String[] args) ` `{ ` `    ``String str = ``"100100"``; ` `    ``int` `len = str.Length; ` `    ``Console.WriteLine(highestPower(str, len)); ` `} ` `} ` ` `  `/* This code contributed by PrinciRaj1992 */`

## PHP

 `= 0; ``\$i``--) ` `    ``{  ` `        ``if` `(``\$str``[``\$i``] == ``'0'``)  ` `            ``\$ans``++;  ` `        ``else` `            ``break``;  ` `    ``}  ` ` `  `    ``return` `\$ans``;  ` `}  ` ` `  `// Driver code  ` `\$str` `= ``"100100"``;  ` `\$len` `= ``strlen``(``\$str``);  ` `echo` `highestPower(``\$str``, ``\$len``);  ` ` `  `// This code is contributed by Ryuga ` `?> `

Output:

```2
``` My Personal Notes arrow_drop_up Check out this Author's contributed articles.

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.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.