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

Given 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"` `;` ` ` `length ` `=` `len` `(` `str` `);` ` ` `print` `(highestPower(` `str` `, length));` `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` `?>` |

## Javascript

`<script>` `// Javascript 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` ` ` `let ans = 0;` ` ` `// Counting number of consecutive zeros` ` ` `// from the end in the given binary string` ` ` `for` `(let i = len - 1; i >= 0; i--) {` ` ` `if` `(str[i] == ` `'0'` `)` ` ` `ans++;` ` ` `else` ` ` `break` `;` ` ` `}` ` ` `return` `ans;` `}` `// Driver code` ` ` `let str = ` `"100100"` `;` ` ` `let len = str.length;` ` ` `document.write(highestPower(str, len));` ` ` `</script>` |

**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. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

In case you wish to attend **live classes **with experts, please refer **DSA Live Classes for Working Professionals **and **Competitive Programming Live for Students**.