Related Articles

# Toggle bits in the given range

• Difficulty Level : Medium
• Last Updated : 21 May, 2021

Given a non-negative number n and two values l and r. The problem is to toggle the bits in the range l to r in the binary representation of n, i.e, to toggle bits from the rightmost lth bit to the rightmost rth bit. A toggle operation flips a bit 0 to 1 and a bit 1 to 0.
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 toggled.

Input : n = 50, l = 2, r = 5
Output : 44```

Approach: Following are the steps:

1. Calculate num as = ((1 << r) – 1) ^ ((1 << (l-1)) – 1) or as ((1 <<r)-l). This will produce a number num having r number of bits and bits in the range l to r are the only set bits.
2. Now, perform n = n ^ num. This will toggle the bits in the range l to r in n.

C/C++

``````
// C++ implementation to toggle bits in
// the given range
#include <bits/stdc++.h>
using namespace std;

// function to toggle bits in the given range
unsigned int toggleBitsFromLToR(unsigned int n,
unsigned int l, unsigned int r)
{
// calculating a number 'num' having 'r'
// number of bits and bits in the range l
// to r are the only set bits
int num = ((1 << r) - 1) ^ ((1 << (l - 1)) - 1);

// toggle bits in the range l to r in 'n'
// and return the number
//Besides this, we can calculate num as: num=(1<<r)-l .
return (n ^ num);
}

// Driver program to test above
int main()
{
unsigned int n = 50;
unsigned int l = 2, r = 5;
cout << toggleBitsFromLToR(n, l, r);
return 0;
}
``````

## Java

 `// Java implementation to toggle bits in``// the given range``import` `java.io.*;` `class` `GFG``{``    ``// Function to toggle bits in the given range``    ``static` `int` `toggleBitsFromLToR(``int` `n, ``int` `l, ``int` `r)``    ``{``        ``// calculating a number 'num' having 'r'``        ``// number of bits and bits in the range l``        ``// to r are the only set bits``        ``int` `num = ((``1` `<< r) - ``1``) ^ ((``1` `<< (l - ``1``)) - ``1``);`` ` `        ``// toggle bits in the range l to r in 'n'``        ``// and return the number``        ``//Besides this, we can calculate num as: num=(1<

## Python3

 `# Python implementation``# to toggle bits in``# the given range` `# function to toggle bits``# in the given range``def` `toggleBitsFromLToR(n,l,r):` `    ``# calculating a number``    ``# 'num' having 'r'``    ``# number of bits and``    ``# bits in the range l``    ``# to r are the only set bits``    ``num ``=` `((``1` `<< r) ``-` `1``) ^ ((``1` `<< (l ``-` `1``)) ``-` `1``)`` ` `    ``# toggle bits in the``    ``# range l to r in 'n'``    ``# Besides this, we can calculate num as: num=(1<

## C#

 `// C# implementation to toggle bits``// in the given range``using` `System;` `namespace` `Toggle``{``    ``public` `class` `GFG``    ``{    ``                ` `    ``// Function to toggle bits in the given range``    ``static` `int` `toggleBitsFromLToR(``int` `n, ``int` `l, ``int` `r)``    ``{``        ``// calculating a number 'num' having 'r'``        ``// number of bits and bits in the range l``        ``// to r are the only set bits``        ``int` `num = ((1 << r) - 1) ^ ((1 << (l - 1)) - 1);` `        ``// toggle bits in the range l to r in 'n'``        ``//Besides this, we can calculate num as: num=(1<

## PHP

 ``

## Javascript

 ``

Output:

`44`

This article is contributed by Ayush Jauhari. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.