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
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;
} |
chevron_right
filter_none
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. |
chevron_right
filter_none
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 |
chevron_right
filter_none
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 */ |
chevron_right
filter_none
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 ?> |
chevron_right
filter_none
Output:
2
Article Tags :
Practice Tags :