# Unset least significant K bits of a given number

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=5
Output: 192
Explanation:
(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 = 3
Output: 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 0s with 1s 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 ``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;``}`

## 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`

## 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`

## 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`

## Javascript

 ``

Output:
`720`

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

Previous
Next