Open In App

Set all the bits in given range of a number

Last Updated : 27 May, 2022
Improve
Improve
Like Article
Like
Save
Share
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)

 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads