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

2^{2}= 4 is the highest power of 2 that divides 36 (100100).

Input:str = “10010”Output:1

**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 <bits/stdc++.h>` `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

`<?php` `// PHP implementation of the approach ` ` ` `// Function to return the highest power of 2 ` `// which divides the given binary number ` `function` `highestPower(` `$str` `, ` `$len` `) ` `{ ` ` ` ` ` `// 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` `= ` `$len` `- 1; ` `$i` `>= 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

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. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price.

In case you wish to attend live classes with industry experts, please refer **Geeks Classes Live** and **Geeks Classes Live USA**