Dado un número entero N , la tarea es imprimir el número obtenido al desarmar los K bits menos significativos de N .
Ejemplos:
Entrada: N = 200, K=5
Salida: 192
Explicación:
(200) 10 = (11001000) 2
Quitando los K(= 5) bits menos significativos de la representación binaria anterior, el nuevo número obtenido es (11000000) 2 = (192 ) 10Entrada: N = 730, K = 3
Salida: 720
Enfoque: siga los pasos a continuación para resolver el problema:
- La idea es crear una máscara de la forma 111111100000… .
- Para crear una máscara, comience con todos como 1111111111… .
- Hay dos opciones posibles para generar todos los 1. Puede generarlo cambiando todos los 0 por 1 o usando el complemento a 2 y desplazándolo a la izquierda en K bits.
máscara = ((~0) << K + 1) o
máscara = (-1 << K + 1)
- Finalmente, imprima el valor de K + 1 ya que es una indexación basada en cero de derecha a izquierda.
A continuación se muestra la implementación del enfoque anterior:
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; }
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
<script> // javascript program for the above approach // Function to return the value // after unsetting K LSBs function clearLastBit(N , K) { // Create a mask var mask = (-1 << K + 1); // Bitwise AND operation with // the number and the mask return N = N & mask; } // Driver Code //Given N and K var N = 730, K = 3; // Function Call document.write(clearLastBit(N, K)); // This code contributed by shikhasingrajput </script>
Producción:
720
Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)