Quitar los K bits menos significativos de un número dado

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 ) 10

Entrada: 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)

Publicación traducida automáticamente

Artículo escrito por viv_007 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *