# Toggle all even bits of a number

• Difficulty Level : Medium
• Last Updated : 12 Jul, 2022

Given a number, the task is to Toggle all even bit of a number
Examples:

```Input : 10
Output : 0
binary representation 1 0 1 0
after toggle          0 0 0 0

Input : 20
Output : 30
binary representation 1 0 1 0 0
after toggle          1 1 1 1 0```

1. First generate a number that contains even position bits.
2. Take XOR with the original number. Note that 1 ^ 1 = 0 and 1 ^ 0 = 1.
Let’s understand this approach with below code.

## C++

 `// CPP code to Toggle all even``// bit of a number``#include ``using` `namespace` `std;` `// Returns a number which has all even``// bits of n toggled.``int` `evenbittogglenumber(``int` `n)``{``    ``// Generate number form of 101010``    ``// ..till of same order as n``    ``int` `res = 0, count = 0;``    ``for` `(``int` `temp = n; temp > 0; temp >>= 1) {` `        ``// if bit is even then generate``        ``// number and or with res``        ``if` `(count % 2 == 1)``            ``res |= (1 << count);     ` `        ``count++;``    ``}` `    ``// return toggled number``    ``return` `n ^ res;``}` `// Driver code``int` `main()``{``    ``int` `n = 11;``    ``cout << evenbittogglenumber(n);``    ``return` `0;``}`

## Java

 `// Java code to Toggle all``// even bit of a number``import` `java.io.*;` `class` `GFG {``    ` `    ``// Returns a number which has``    ``// all even bits of n toggled.``    ``static` `int` `evenbittogglenumber(``int` `n)``    ``{``        ``// Generate number form of 101010``        ``// ..till of same order as n``        ``int` `res = ``0``, count = ``0``;``        ``for` `(``int` `temp = n; temp > ``0``;``                               ``temp >>= ``1``)``        ``{``            ``// if bit is even then generate``            ``// number and or with res``            ``if` `(count % ``2` `== ``1``)``                ``res |= (``1` `<< count);     ``     ` `            ``count++;``        ``}``     ` `        ``// return toggled number``        ``return` `n ^ res;``    ``}``     ` `    ``// Driver code``    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `n = ``11``;``        ``System.out.println(evenbittogglenumber(n));``    ``}``}` `// This code is contributed by Nikita Tiwari.`

## Python3

 `# Python code to Toggle all``# even bit of a number` `# Returns a number which has all even``# bits of n toggled.``def` `evenbittogglenumber(n) :` `    ``# Generate number form of 101010``    ``# ..till of same order as n``    ``res ``=` `0``    ``count ``=` `0``    ``temp ``=` `n` `    ``while` `(temp > ``0``) :``        ` `        ``# if bit is even then generate``        ``# number and or with res``        ``if` `(count ``%` `2` `=``=` `1``) :``            ``res ``=` `res | (``1` `<< count)    `` ` `        ``count ``=` `count ``+` `1``        ``temp >>``=` `1``        ` ` ` `    ``# return toggled number``    ``return` `n ^ res`` ` `# Driver code``n ``=` `11``print``(evenbittogglenumber(n))` `#This code is contributed by Nikita Tiwari.`

## C#

 `// C# code to Toggle all``// even bit of a number``using` `System;`` ` `class` `GFG {``     ` `    ``// Returns a number which has``    ``// all even bits of n toggled.``    ``static` `int` `evenbittogglenumber(``int` `n)``    ``{``        ``// Generate number form of 101010``        ``// ..till of same order as n``        ``int` `res = 0, count = 0;``        ` `        ``for` `(``int` `temp = n; temp > 0;``                               ``temp >>= 1)``        ``{``            ``// if bit is even then generate``            ``// number and or with res``            ``if` `(count % 2 == 1)``                ``res |= (1 << count);     ``      ` `            ``count++;``        ``}``      ` `        ``// return toggled number``        ``return` `n ^ res;``    ``}``      ` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ` `        ``int` `n = 11;``        ` `        ``Console.WriteLine(evenbittogglenumber(n));``    ``}``}`` ` `// This code is contributed by Anant Agarwal.`

## PHP

 ` 0; ``\$temp` `>>= 1)``    ``{` `        ``// if bit is even then generate``        ``// number and or with res``        ``if` `(``\$count` `% 2 == 1)``            ``\$res` `|= (1 << ``\$count``);    ` `        ``\$count``++;``    ``}` `    ``// return toggled number``    ``return` `\$n` `^ ``\$res``;``}` `    ``// Driver code``    ``\$n` `= 11;``    ``echo` `evenbittogglenumber(``\$n``);` `// This code is contributed by mits``?>`

## Javascript

 ``

Output

`1`

Time Complexity : O(log n)

Auxiliary Space: O(1)

Another Approach:

To toggle a bit, we can take XOR of 1 and that bit (as 1 ^ 1 = 0, and 1 ^ 0 = 1). Therefore, to set all odd bits of an n bit number, we need to use a bit mask which is an n bit binary number with all odd bits set. This mask can be generated in 1 step using the formula of sum of a geometric progression, as an n bit number …1010 is equal to 21 + 23 + 25 + …. 2 (n – !(n % 1)) .

## C++

 `//C++ implementation of the approach` `#include ``using` `namespace` `std;` `//function to toggle all the even bits``long` `long` `int` `evenbittogglenumber(``long` `long` `int` `n) {``    ``//calculating number of bits using log``    ``int` `numOfBits = 1 + (``int``)log2(n);``      ``//if there is only one bit,``      ``if` `(numOfBits == 1)``          ``return` `n;``    ``//calculating the max power of GP series``    ``int` `m = (numOfBits / 2);``    ``//calculating mask using GP sum``      ``//which is a(r ^ n - 1) / (r - 1)``      ``//where a = 2, r = 4, n = m``    ``int` `mask = 2 * (``pow``(4, m) - 1) / 3;``    ``//toggling all even bits using mask ^ n``    ``return` `mask ^ n;``    ``}` `// Driver code``int` `main()``{``    ``int` `n = 11;``    ``//function call``    ``cout << evenbittogglenumber(n);``    ``return` `0;``}` `//this code is contributed by phasing17`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GFG {` `  ``// function to toggle all the even bits``  ``static` `int` `evenbittogglenumber(``int` `n)``  ``{` `    ``// calculating number of bits using log``    ``int` `numOfBits``      ``= 1 + (``int``)(Math.Log(n) / Math.Log(2));` `    ``// if there is only one bit,``    ``if` `(numOfBits == 1)``      ``return` `n;` `    ``// calculating the max power of GP series``    ``int` `m = (numOfBits / 2);` `    ``// calculating mask using GP sum``    ``// which is a(r ^ n - 1) / (r - 1)``    ``// where a = 2, r = 4, n = m``    ``int` `mask = 2 * (``int``)(Math.Pow(4, m) - 1) / 3;` `    ``// toggling all even bits using mask ^ n``    ``return` `mask ^ n;``  ``}` `  ``// Driver code``  ``public` `static` `void` `Main(``string``[] args)``  ``{``    ``int` `n = 11;` `    ``// Function call``    ``Console.WriteLine(evenbittogglenumber(n));``  ``}``}` `// This code is contributed by phasing17`

## Javascript

 `//JavaScript implementation of the approach`  `//function to toggle all the even bits``function` `evenbittogglenumber(n) {``    ` `    ``//calculating number of bits using log``    ``let numOfBits = 1 + Math.floor(Math.log2(n));``    ` `      ``//if there is only one bit,``      ``if` `(numOfBits == 1)``          ``return` `n;``          ` `    ``//calculating the max power of GP series``    ``let m = Math.floor(numOfBits / 2);``    ` `    ``//calculating mask using GP sum``      ``//which is a(r ^ n - 1) / (r - 1)``      ``//where a = 2, r = 4, n = m``    ``let mask = Math.floor(2 * (Math.pow(4, m) - 1) / 3);``    ` `    ``//toggling all even bits using mask ^ n``    ``return` `mask ^ n;``    ``}`  `// Driver code``let n = 11;``    ` `//function call``console.log(evenbittogglenumber(n));`  `//this code is contributed by phasing17`

Output

`1`

Time Complexity : O(1)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up