Dado un número no negativo n y dos valores l y r. El problema es establecer los bits en el rango de l a r en la representación binaria de n, es decir, desactivar los bits desde el l-ésimo bit más a la derecha hasta el r-ésimo bit más a la derecha.
Restricción: 1 <= l <= r <= número de bits en la representación binaria de n.
Ejemplos:
Input : n = 17, l = 2, r = 3 Output : 23 (17)10 = (10001)2 (23)10 = (10111)2 The bits in the range 2 to 3 in the binary representation of 17 are set. Input : n = 50, l = 2, r = 5 Output : 62
Enfoque: Los siguientes son los pasos:
1. Find a number 'range' that has all set bits in given range. And all other bits of this number are 0. range = (((1 << (l - 1)) - 1) ^ ((1 << (r)) - 1)); 2. Now, perform "n = n | range". This will set the bits in the range from l to r in n.
C++
// C++ implementation to Set bits in // the given range #include <iostream> using namespace std; // function to toggle bits in the given range int setallbitgivenrange(int n, int l, int r) { // calculating a number 'range' having set // bits in the range from l to r and all other // bits as 0 (or unset). int range = (((1 << (l - 1)) - 1) ^ ((1 << (r)) - 1)); return (n | range); } // Driver code int main() { int n = 17, l = 2, r = 3; cout << setallbitgivenrange(n, l, r); return 0; }
Java
// java implementation to Set bits in // the given range import java.util.*; class GFG { // function to toggle bits in the // given range static int setallbitgivenrange(int n, int l, int r) { // calculating a number 'range' // having set bits in the range // from l to r and all other // bits as 0 (or unset). int range = (((1 << (l - 1)) - 1) ^ ((1 << (r)) - 1)); return (n | range); } // Driver code public static void main(String[] args) { int n = 17, l = 2, r = 3; System.out.println(setallbitgivenrange( n, l, r)); } } // This code is contributed by Sam007.
Python3
# Python3 implementation to Set # bits in the given range # Function to toggle bits # in the given range def setallbitgivenrange(n, l, r): # calculating a number 'range' # having set bits in the range # from l to r and all other # bits as 0 (or unset). range = (((1 << (l - 1)) - 1) ^ ((1 << (r)) - 1)) return (n | range) # Driver code n, l, r = 17, 2, 3 print(setallbitgivenrange(n, l, r)) # This code is contributed by Anant Agarwal.
C#
// C# implementation to Set // bits in the given range using System; class GFG { // function to toggle bits // in the given range static int setallbitgivenrange(int n, int l, int r) { // calculating a number 'range' // having set bits in the range // from l to r and all other // bits as 0 (or unset). int range = (((1 << (l - 1)) - 1) ^ ((1 << (r)) - 1)); return (n | range); } // Driver code static void Main() { int n = 17, l = 2, r = 3; Console.Write(setallbitgivenrange(n, l, r)); } } // This code is contributed by Sam007
PHP
<?php // PHP implementation to Set // bits in the given range // function to toggle bits // in the given range function setallbitgivenrange($n, $l, $r) { // calculating a number 'range' // having set bits in the range // from l to r and all other // bits as 0 (or unset). $range = (((1 << ($l - 1)) - 1) ^ ((1 << ($r)) - 1)); return ($n | $range); } // Driver code $n = 17; $l = 2; $r = 3; echo setallbitgivenrange($n, $l, $r); // This code is contributed by Sam007 ?>
Javascript
<script> // Javascript implementation to Set bits in // the given range // function to toggle bits in the given range function setallbitgivenrange(n, l, r) { // calculating a number 'range' having set // bits in the range from l to r and all other // bits as 0 (or unset). let range = (((1 << (l - 1)) - 1) ^ ((1 << (r)) - 1)); return (n | range); } // Driver code let n = 17, l = 2, r = 3; document.write(setallbitgivenrange(n, l, r)); </script>
Producción :
23
Complejidad de tiempo : O(1)
Espacio Auxiliar : O(1)
Este artículo es una contribución de Devanshu Agarwal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA