Toggle all odd bits of a number
Given n number, the task is to toggle odd bit of the number.
Examples:
Input : 10 Output : 15 binary representation 1 0 1 0 after toggle 1 1 1 1 Input : 20 Output : 1 binary representation 1 0 1 0 0 after toggle 0 0 0 0 1
1. First generate a number that contains odd 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++
// Toggle all odd bit of a number #include <iostream> using namespace std; // Returns a number which has all odd // 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 odd, then generate // number and or with res if (count % 2 == 0) res |= (1 << count); count++; } // return toggled number return n ^ res; } // Driver code int main() { int n = 11; cout << evenbittogglenumber(n); return 0; } |
Java
// Toggle all odd bit of a number import java.io.*; class GFG { // Returns a number which has all odd // 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 odd, then generate // number and or with res if (count % 2 == 0 ) 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
# Python3 code for Toggle all odd bit of a number # Returns a number which has all odd # 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 odd, then generate # number and or with res if (count % 2 = = 0 ) : res = res | ( 1 << count) count = count + 1 temp >> = 1 # Return toggled number return n ^ res # Driver code if __name__ = = '__main__' : n = 11 print (evenbittogglenumber(n)) # This code is contributed by Nikita Tiwari. |
C#
// C# code for Toggle all odd bit of a number using System; class GFG { // Returns a number which has all odd // 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 odd, then generate // number and or with res if (count % 2 == 0) 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
<?php // php implementation of Toggle // all odd bit of a number // Returns a number which has // all odd bits of n toggled. function evenbittogglenumber( $n ) { // Generate number form of 101010... // ..till of same order as n $res = 0; $count = 0; for ( $temp = $n ; $temp > 0; $temp >>= 1) { // if bit is odd, then generate // number and or with res if ( $count % 2 == 0) $res |= (1 << $count ); $count ++; } // return toggled number return $n ^ $res ; } // Driver code $n = 11; echo evenbittogglenumber( $n ); // This code is contributed by mits ?> |
Javascript
<script> // JavaScript program Toggle all odd bit of a number // Returns a number which has all odd // bits of n toggled. function evenbittogglenumber(n) { // Generate number form of 101010... // ..till of same order as n let res = 0, count = 0; for (let temp = n; temp > 0; temp >>= 1) { // if bit is odd, then generate // number and or with res if (count % 2 == 0) res |= (1 << count); count++; } // return toggled number return n ^ res; } // Driver code let n = 11; document.write(evenbittogglenumber(n)); </script> |
Output :
14
Time Complexity : O(log n)
Space Complexity : O(1)