Given an integer **N**, the task is to print the number obtained by unsetting the least significant **K** bits from **N**.

**Examples:**

Input:N = 200, K=5Output:192Explanation:

(200)_{10}= (11001000)_{2}

Unsetting least significant K(= 5) bits from the above binary representation, the new number obtained is (11000000)_{2}= (192)_{10}

Input:N = 730, K = 3Output:720

**Approach:** Follow the steps below to solve the problem:

- The idea is to create a mask of the form
**111111100000…**. - To create a mask, start from all ones as
**1111111111…**. - There are two possible options to generate all 1s. Either generate it by flipping all
**0**s with**1**s or by using 2s complement and left shift it by**K**bits.

mask = ((~0) << K + 1) or

mask = (-1 << K + 1)

- Finally, print the value of
**K + 1**as it is zero-based indexing from the right to left.

Below is the implementation of the above approach:

## C++

`// C++ program for the above approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to return the value` `// after unsetting K LSBs` `int` `clearLastBit(` `int` `N, ` `int` `K)` `{` ` ` `// Create a mask` ` ` `int` `mask = (-1 << K + 1);` ` ` `// Bitwise AND operation with` ` ` `// the number and the mask` ` ` `return` `N = N & mask;` `}` `// Driver Code` `int` `main()` `{` ` ` `// Given N and K` ` ` `int` `N = 730, K = 3;` ` ` `// Function Call` ` ` `cout << clearLastBit(N, K);` ` ` `return` `0;` `}` |

*chevron_right*

*filter_none*

## Java

`// Java program for the above approach` `import` `java.util.*;` `class` `GFG{` `// Function to return the value` `// after unsetting K LSBs` `static` `int` `clearLastBit(` `int` `N, ` `int` `K)` `{` ` ` `// Create a mask` ` ` `int` `mask = (-` `1` `<< K + ` `1` `);` ` ` `// Bitwise AND operation with` ` ` `// the number and the mask` ` ` `return` `N = N & mask;` `}` `// Driver Code` `public` `static` `void` `main(String[] args)` `{` ` ` `// Given N and K` ` ` `int` `N = ` `730` `, K = ` `3` `;` ` ` `// Function Call` ` ` `System.out.print(clearLastBit(N, K));` `}` `}` `// This code is contributed by shikhasingrajput` |

*chevron_right*

*filter_none*

## Python3

`# Python3 program for the above approach ` `# Function to return the value ` `# after unsetting K LSBs` `def` `clearLastBit(N, K):` ` ` `# Create a mask` ` ` `mask ` `=` `(` `-` `1` `<< K ` `+` `1` `)` ` ` `# Bitwise AND operation with` ` ` `# the number and the mask` ` ` `N ` `=` `N & mask` ` ` `return` `N` `# Driver Code` `# Given N and K` `N ` `=` `730` `K ` `=` `3` `# Function call` `print` `(clearLastBit(N, K))` `# This code is contributed by Shivam Singh` |

*chevron_right*

*filter_none*

## C#

`// C# program for the above approach` `using` `System;` `class` `GFG{` `// Function to return the value` `// after unsetting K LSBs` `static` `int` `clearLastBit(` `int` `N, ` ` ` `int` `K)` `{` ` ` `// Create a mask` ` ` `int` `mask = (-1 << K + 1);` ` ` `// Bitwise AND operation with` ` ` `// the number and the mask` ` ` `return` `N = N & mask;` `}` `// Driver Code` `public` `static` `void` `Main(String[] args)` `{` ` ` `// Given N and K` ` ` `int` `N = 730, K = 3;` ` ` `// Function Call` ` ` `Console.Write(clearLastBit(N, K));` `}` `}` `// This code is contributed by shikhasingrajput` |

*chevron_right*

*filter_none*

**Output:**

720

**Time Complexity:** O(1)**Auxiliary Space:** O(1)

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.