Open In App

Set all the bits in given range of a number

Last Updated : 27 May, 2022
Suggest changes
Share
Like Article
Like
Report

Given a non-negative number n and two values l and r. The problem is to set the bits in the range l to r in the binary representation of n, i.e, to unset bits from the rightmost lth bit to the rightmost r-th bit. 
Constraint: 1 <= l <= r <= number of bits in the binary representation of n.
Examples : 
 

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


 


Approach: Following are the steps: 
 

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> 

Output :  

23

Time Complexity : O(1)

Auxiliary Space : O(1)


 


Similar Reads

Article Tags :
Practice Tags :