Related Articles
Highest power of 2 that divides a number represented in binary
• Difficulty Level : Medium
• Last Updated : 02 May, 2019

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 numberint 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 codeint main(){    string str = "100100";    int len = str.length();    cout << highestPower(str, len);      return 0;}

## Java

 // Java implementation of the approachclass GFG{      // Function to return the highest power of 2// which divides the given binary numberstatic 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 codepublic 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 numberdef 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 codedef main():    str = "100100";    lenngth = len(str);    print(highestPower(str, lenngth));  if __name__ == '__main__':    main()  # This code contributed by PrinciRaj1992

## C#

 // C# implementation of the approachusing System;      class GFG{      // Function to return the highest power of 2// which divides the given binary numberstatic 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 codepublic 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

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

My Personal Notes arrow_drop_up