Desarmar los últimos m bits

Dado un número no negativo n . El problema es desarmar los últimos m bits en la representación binaria de n .
Restricción: 1 <= m <= num, donde num es el número de bits en la representación binaria de n .

Ejemplos: 

Input : n = 10, m = 2
Output : 8
(10)10 = (1010)2
(8)10 = (1000)2
The last two bits in the binary 
representation of 10 have been unset.

Input : n = 150, m = 4
Output : 144

Enfoque: Los siguientes son los pasos: 

  1. Calcule num = (1 << (sizeof(int) * 8 – 1)) – 1. Esto producirá el número entero positivo más alto . Se establecerán todos los bits en num .
  2. Alternar los últimos m bits en num . Consulte esta publicación.
  3. Ahora, realice n = n & num . Esto desactivará los últimos m bits en n .
  4. Regreso n .

Nota: El tamaño de (int) se ha utilizado como entrada de tipo de datos int . Para entradas grandes, puede usar tipos de datos long int o long long int en lugar de int

C++

// C++ implementation to unset bits the last m bits
#include <bits/stdc++.h>
using namespace std;
 
// function to toggle the last m bits
unsigned int toggleLastMBits(unsigned int n,
                             unsigned int m)
{
    // calculating a number 'num' having 'm' bits
    // and all are set
    unsigned int num = (1 << m) - 1;
 
    // toggle the last m bits and return the number
    return (n ^ num);
}
 
// function to unset bits the last m bits
unsigned int unsetLastMBits(unsigned int n,
                            unsigned int m)
{
    // 'num' is the highest positive integer number
    // all the bits of 'num' are set
    unsigned int num = (1 << (sizeof(int) * 8 - 1)) - 1;
 
    // toggle the last 'm' bits in 'num'
    num = toggleLastMBits(num, m);
 
    // unset the last 'm' bits in 'n'
    // and return the number
    return (n & num);
}
 
// Driver program to test above
int main()
{
    unsigned int n = 150, m = 4;
    cout << unsetLastMBits(n, m);
    return 0;
}

Java

// Java implementation to unset
// bits the last m bits
class GFG
{
     
static int sizeofInt = 8;
 
// function to toggle the last m bits
static int toggleLastMBits(int n,
                            int m)
{
    // calculating a number 'num' having 'm' bits
    // and all are set
    int num = (1 << m) - 1;
 
    // toggle the last m bits and return the number
    return (n ^ num);
}
 
// function to unset bits the last m bits
static int unsetLastMBits(int n,
                            int m)
{
    // 'num' is the highest positive integer number
    // all the bits of 'num' are set
    int num = (1 << (sizeofInt * 8 - 1)) - 1;
 
    // toggle the last 'm' bits in 'num'
    num = toggleLastMBits(num, m);
 
    // unset the last 'm' bits in 'n'
    // and return the number
    return (n & num);
}
 
// Driver code
public static void main(String[] args)
{
    int n = 150, m = 4;
    System.out.println(unsetLastMBits(n, m));
}
}
 
/* This code is contributed by PrinciRaj1992 */

Python3

# Python3 implementation to unset
# bits the last m bits
import sys
 
# function to toggle the last m bits
def toggleLastMBits (n, m):
     
    # calculating a number 'num'
    # having 'm' bits and all are set
    num = (1 << m) - 1
 
    # toggle the last m bits
    # and return the number
    return (n ^ num)
 
# function to unset bits
# the last m bits
def unsetLastMBits(n, m):
 
    # 'num' is the highest positive integer
    # number all the bits of 'num' are set
    num = (1 << (sys.getsizeof(int) * 8 - 1)) - 1
 
    # toggle the last 'm' bits in 'num'
    num = toggleLastMBits(num, m)
 
    # unset the last 'm' bits in 'n'
    # and return the number
    return (n & num)
 
# Driven code
n = 150
m = 4
print (unsetLastMBits(n, m))
 
# This code is contributed by "rishabh_jain".

C#

// C# implementation to unset
// bits the last m bits
using System;
 
class GFG
{
     
static int sizeofInt = 8;
 
// function to toggle the last m bits
static int toggleLastMBits(int n,
                            int m)
{
    // calculating a number 'num' having 'm' bits
    // and all are set
    int num = (1 << m) - 1;
 
    // toggle the last m bits and return the number
    return (n ^ num);
}
 
// function to unset bits the last m bits
static int unsetLastMBits(int n,
                            int m)
{
    // 'num' is the highest positive integer number
    // all the bits of 'num' are set
    int num = (1 << (sizeofInt * 8 - 1)) - 1;
 
    // toggle the last 'm' bits in 'num'
    num = toggleLastMBits(num, m);
 
    // unset the last 'm' bits in 'n'
    // and return the number
    return (n & num);
}
 
// Driver code
public static void Main(String[] args)
{
    int n = 150, m = 4;
    Console.WriteLine(unsetLastMBits(n, m));
}
}
 
// This code is contributed by Rajput-Ji

PHP

<?php
// php implementation to unset
// bits the last m bits
 
// function to toggle
// the last m bits
function toggleLastMBits($n, $m)
{
     
    // calculating a number 'num'
    // having 'm' bits
    // and all are set
    $num = (1 << $m) - 1;
 
    // toggle the last m bits
    // and return the number
    return ($n ^ $num);
}
 
// function to unset bits
// the last m bits
function unsetLastMBits($n,$m)
{
     
    // 'num' is the highest positive
    // integer number all the bits
    // of 'num' are set
     
    //4 is Size of integer 32 bit
    $num = (1 << (4 * 8 - 1)) - 1;
     
    // toggle the last 'm' bits in 'num'
    $num = toggleLastMBits($num, $m);
 
    // unset the last 'm' bits in 'n'
    // and return the number
    return ($n & $num);
}
 
    // Drivercode
    $n = 150;
    $m = 4;
    echo unsetLastMBits($n, $m);
 
// This code is contributed by mits
?>

Javascript

<script>
 
// JavaScript implementation to unset
// bits the last m bits
let sizeofLet = 8;
   
// Function to toggle the last m bits
function toggleLastMBits(n, m)
{
     
    // Calculating a number 'num' having
    // 'm' bits and all are set
    let num = (1 << m) - 1;
   
    // Toggle the last m bits and
    // return the number
    return (n ^ num);
}
   
// Function to unset bits the last m bits
function unsetLastMBits(n, m)
{
     
    // 'num' is the highest positive
    // integer number all the bits of
    // 'num' are set
    let num = (1 << (sizeofLet * 8 - 1)) - 1;
   
    // Toggle the last 'm' bits in 'num'
    num = toggleLastMBits(num, m);
   
    // unset the last 'm' bits in 'n'
    // and return the number
    return (n & num);
}
   
// Driver Code
let  n = 150, m = 4;
 
document.write(unsetLastMBits(n, m));
 
// This code is contributed by sanjoy_62
 
</script>

Producción: 

144

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por ayushjauhari14 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 *