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 (10**1**), our output is 00**1**. For n = 48 (1**1**0000), our output is 0**1**0000 *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