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:
- 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 .
- Alternar los últimos m bits en num . Consulte esta publicación.
- Ahora, realice n = n & num . Esto desactivará los últimos m bits en n .
- 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