Toggle all even bits of a number
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++
#include <iostream>
using namespace std;
int evenbittogglenumber( int n)
{
int res = 0, count = 0;
for ( int temp = n; temp > 0; temp >>= 1) {
if (count % 2 == 1)
res |= (1 << count);
count++;
}
return n ^ res;
}
int main()
{
int n = 11;
cout << evenbittogglenumber(n);
return 0;
}
|
Java
import java.io.*;
class GFG {
static int evenbittogglenumber( int n)
{
int res = 0 , count = 0 ;
for ( int temp = n; temp > 0 ;
temp >>= 1 )
{
if (count % 2 == 1 )
res |= ( 1 << count);
count++;
}
return n ^ res;
}
public static void main(String args[])
{
int n = 11 ;
System.out.println(evenbittogglenumber(n));
}
}
|
Python3
def evenbittogglenumber(n) :
res = 0
count = 0
temp = n
while (temp > 0 ) :
if (count % 2 = = 1 ) :
res = res | ( 1 << count)
count = count + 1
temp >> = 1
return n ^ res
n = 11
print (evenbittogglenumber(n))
|
C#
using System;
class GFG {
static int evenbittogglenumber( int n)
{
int res = 0, count = 0;
for ( int temp = n; temp > 0;
temp >>= 1)
{
if (count % 2 == 1)
res |= (1 << count);
count++;
}
return n ^ res;
}
public static void Main()
{
int n = 11;
Console.WriteLine(evenbittogglenumber(n));
}
}
|
PHP
<?php
function evenbittogglenumber( $n )
{
$res = 0;
$count = 0;
for ( $temp = $n ; $temp > 0; $temp >>= 1)
{
if ( $count % 2 == 1)
$res |= (1 << $count );
$count ++;
}
return $n ^ $res ;
}
$n = 11;
echo evenbittogglenumber( $n );
?>
|
Javascript
<script>
function evenbittogglenumber(n)
{
let res = 0, count = 0;
for (let temp = n; temp > 0;
temp >>= 1)
{
if (count % 2 == 1)
res |= (1 << count);
count++;
}
return n ^ res;
}
let n = 11;
document.write(evenbittogglenumber(n));
</script>
|
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++
#include <bits/stdc++.h>
using namespace std;
long long int evenbittogglenumber( long long int n) {
int numOfBits = 1 + ( int )log2(n);
if (numOfBits == 1)
return n;
int m = (numOfBits / 2);
int mask = 2 * ( pow (4, m) - 1) / 3;
return mask ^ n;
}
int main()
{
int n = 11;
cout << evenbittogglenumber(n);
return 0;
}
|
Java
import java.lang.Math;
public class Main {
public static long evenBitToggleNumber( long n) {
int numOfBits = 1 + ( int ) (Math.log(n) / Math.log( 2 ));
if (numOfBits == 1 )
return n;
int m = (numOfBits / 2 );
long mask = 2 * (( long ) Math.pow( 4 , m) - 1 ) / 3 ;
return mask ^ n;
}
public static void main(String[] args) {
long n = 11 ;
System.out.println(evenBitToggleNumber(n));
}
}
|
Python3
import math
def even_bit_toggle_number(n):
num_of_bits = 1 + int (math.log2(n))
if num_of_bits = = 1 :
return n
m = num_of_bits / / 2
mask = int ( 2 * (( 4 * * m) - 1 ) / 3 )
return mask ^ n
n = 11
print (even_bit_toggle_number(n))
|
C#
using System;
class GFG {
static int evenbittogglenumber( int n)
{
int numOfBits
= 1 + ( int )(Math.Log(n) / Math.Log(2));
if (numOfBits == 1)
return n;
int m = (numOfBits / 2);
int mask = 2 * ( int )(Math.Pow(4, m) - 1) / 3;
return mask ^ n;
}
public static void Main( string [] args)
{
int n = 11;
Console.WriteLine(evenbittogglenumber(n));
}
}
|
Javascript
function evenbittogglenumber(n) {
let numOfBits = 1 + Math.floor(Math.log2(n));
if (numOfBits == 1)
return n;
let m = Math.floor(numOfBits / 2);
let mask = Math.floor(2 * (Math.pow(4, m) - 1) / 3);
return mask ^ n;
}
let n = 11;
console.log(evenbittogglenumber(n));
|
Time Complexity : O(1)
Auxiliary Space: O(1)
Last Updated :
07 Mar, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...