Skip to content
Related Articles

Related Articles

Highest power of two that divides a given number
  • Last Updated : 23 Mar, 2021

Given a number n, find the highest power of 2 that divides n.
Examples:
 

Input : n = 48 
Output : 16 
Highest power of 2 that divides 48 is 16.
Input : n = 5 
Output : 1 
Highest power of 2 that divides 5 is 1.

 

A simple solution is to try all powers of 2 one by one starting from 1, then 2, then 4 and so on.
An efficient solution is based on bit magic. If we take a closer look, we can notice that, we basically need to find the number that has rightmost bit set at same position as n and all other bits as 0. For example, for n = 5 (101), our output is 001. For n = 48 (110000), our output is 010000 
How do we find a number that has same rightmost set bit and all other bits as 0? 
We follow below steps.
Let n = 48 (00110000) 
Subtract one from n, i.e., we do n-1. We get 47(00101111) 
Do negation of (n-1), i.e., we do ~(n-1). We get (11010000). 
Do n & (~(n-1)), we get 00010000 which has value 16.
Below is the implementation of above approach: 
 

C++




// CPP program to find highest power
// of 2 that divides n.
#include<iostream>
using namespace std;
 
int highestPowerOf2(int n)
{
    return (n & (~(n - 1)));
}
 
int main()
{
    int n = 48;
    cout << highestPowerOf2(n);
    return 0;
}

Java




// Java program to find highest power
// of 2 that divides n.
  
class GFG
{
      
static int highestPowerOf2(int n)
{
    return (n & (~(n - 1)));
}
  
public static void main(String []args)
{
    int n = 48;
    System.out.println(highestPowerOf2(n));
}
}

Python3




# Python3 program to find highest power
# of 2 that divides n.
 
def highestPowerOf2(n):
 
    return (n & (~(n - 1)))
 
 
#Driver code
if __name__=='__main__':
    n = 48
    print(highestPowerOf2(n))
 
# this code is contributed
# by ash264

C#




// C# program to find highest power
// of 2 that divides n.
using System;
 
class GFG
{
     
static int highestPowerOf2(int n)
{
    return (n & (~(n - 1)));
}
 
public static void Main()
{
    int n = 48;
    Console.Write(highestPowerOf2(n));
}
}
 
// This code is contributed
// by Akanksha Rai(Abby_akku)

PHP




<?php
// PHP program to find highest power
// of 2 that divides n.
 
function highestPowerOf2($n)
{
    return ($n & (~($n - 1)));
}
 
// Driver Code
$n = 48;
echo highestPowerOf2($n);
 
// This code is contributed
// by Sach_Code..
?>

Javascript




<script>
 
// javascript program to find highest power
// of 2 that divides n.
  
 
      
function highestPowerOf2(n)
{
    return (n & (~(n - 1)));
}
 
var n = 48;
document.write(highestPowerOf2(n));
 
 
// This code is contributed by 29AjayKumar
 
</script>
Output: 
16

 




My Personal Notes arrow_drop_up