Set all even bits of a number - GeeksforGeeks

03 May, 2021
Given a number, the task is to set all even bit of a number. Positions of bits are counted from LSB (least significant bit) to MSB (Most significant bit). Position of LSB is considered as 1.
Examples : 
Input : 20 
Output : 30
Binary representation of 20 is
10100. After setting
even bits, we get 11110

Input : 10
Output : 10
Method 1:- 1. First generate a number that contains even position bits. 2. Take OR with the original number. Note that 1 | 1 = 1 and 1 | 0 = 1.
Let’s understand this approach with below code.
C++
Java
Python3
C#
PHP
Javascript
// Simple CPP program to set all even// bits of a number#include <iostream>using namespace std; // Sets even bits of n and returns// modified number.int evenbitsetnumber(int n){    // Generate 101010...10 number and    // store in res.    int count = 0, res = 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 OR number    return (n | res);} int main(){    int n = 10;    cout << evenbitsetnumber(n);    return 0;}
// Simple Java program to set all even// bits of a numberclass GFG{    // Sets even bits of n and returns    // modified number.    static int evenbitsetnumber(int n)    {        // Generate 101010...10 number and        // store in res.        int count = 0, res = 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 OR number        return (n | res);             }         // Driver code    public static void main(String[] args)    {        int n = 4;         System.out.println(evenbitsetnumber(n));    }} // This code is contributed// by  prerna saini.
# Simple Python program to set all even# bits of a number # Sets even bits of n and returns# modified number.def evenbitsetnumber(n):     # Generate 101010...10 number and    # store in res.    count = 0    res = 0    temp = n    while(temp > 0):         # if bit is even then generate        # number and or with res        if (count % 2 == 1):            res |= (1 << count)         count+=1        temp >>= 1             # return OR number    return (n | res) n = 10print(evenbitsetnumber(n)) # This code is contributed# by Smitha Dinesh Semwal
// Simple C# program to set// all even bits of a numberusing System; class GFG{    // Sets even bits of n and    // returns modified number.    static int evenbitsetnumber(int n) {             // Generate 101010...10 number        //  and store in res.        int count = 0, res = 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 OR number        return (n | res);             }         // Driver code    public static void Main()    {        int n = 4;        Console.WriteLine(evenbitsetnumber(n));    }} // This code is contributed by vt_m.
<?php// Simple php program to set// all even bits of a number // Sets even bits of n and// returns  modified number.function evenbitsetnumber($n){         // Generate 101010...10 number    // and store in res.    $count = 0;    $res = 0;    for ($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 OR number    return ($n | $res);}     //Driver Code    $n = 10;    echo evenbitsetnumber($n); //This Code is contributed by mits?>
<script> // JavaScript program to set all even// bits of a number // Sets even bits of n and returns// modified number.function evenbitsetnumber(n){         // Generate 101010...10 number and    // store in res.    let count = 0, res = 0;    for(let 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 OR number    return (n | res);} // Driver Codelet n = 10; document.write(evenbitsetnumber(n)); // This code is contributed by avijitmondal1998 </script>
10
 
Method 2 (A O(1) solution for 32 bit numbers) 
C++
Java
Python3
C#
PHP
Javascript
// Efficient CPP program to set all even// bits of a number#include <iostream>using namespace std; // return msb set numberint getmsb(int n){     // set all bits    n |= n >> 1;    n |= n >> 2;    n |= n >> 4;    n |= n >> 8;    n |= n >> 16;     // return msb    // increment n by 1    // and shift by 1    return (n + 1) >> 1;} // return even seted numberint getevenbits(int n){     // get msb here    n = getmsb(n);     // generate even bits like 101010..    n |= n >> 2;    n |= n >> 4;    n |= n >> 8;    n |= n >> 16;     // if bits is odd then shift by 1    if (n & 1)        n = n >> 1;     // return even set bits number    return n;} // set all even bits hereint setallevenbits(int n){    // take or with even set bits number    return n | getevenbits(n);} int main(){    int n = 10;    cout << setallevenbits(n);    return 0;}
// Efficient Java program to// set all even bits of a numberimport java.io.*; class GFG{     // return msb set numberstatic int getmsb(int n){     // set all bits    n |= n >> 1;    n |= n >> 2;    n |= n >> 4;    n |= n >> 8;    n |= n >> 16;     // return msb    // increment n by 1    // and shift by 1    return (n + 1) >> 1;} // return even seted numberstatic int getevenbits(int n){     // get msb here    n = getmsb(n);     // generate even    // bits like 101010..    n |= n >> 2;    n |= n >> 4;    n |= n >> 8;    n |= n >> 16;     // if bits is odd    // then shift by 1    if ((n & 1) == 1)        n = n >> 1;     // return even    // set bits number    return n;} // set all even bits herestatic int setallevenbits(int n){    // take or with even    // set bits number    return n | getevenbits(n);} // Driver Codepublic static void main (String[] args){    int n = 10;    System.out.println(setallevenbits(n));}} // This code is contributed by ajit
# Efficient Python 3# program to set all even# bits of a number # return msb set numberdef getmsb(n):     # set all bits    n |= n >> 1    n |= n >> 2    n |= n >> 4    n |= n >> 8    n |= n >> 16     # return msb    # increment n by 1    # and shift by 1    return (n + 1) >> 1  # return even seted numberdef getevenbits(n):       # get msb here    n = getmsb(n)     # generate even bits like 101010..    n |= n >> 2    n |= n >> 4    n |= n >> 8    n |= n >> 16     # if bits is odd then shift by 1    if (n & 1):        n = n >> 1     # return even set bits number    return n   # set all even bits heredef setallevenbits(n):         # take or with even set bits number    return n | getevenbits(n)  n = 10print(setallevenbits(n)) # This code is contributed by# Smitha Dinesh Semwal
// Efficient C# program to// set all even bits of a numberusing System; class GFG{     // return msb set numberstatic int getmsb(int n){     // set all bits    n |= n >> 1;    n |= n >> 2;    n |= n >> 4;    n |= n >> 8;    n |= n >> 16;     // return msb    // increment n by 1    // and shift by 1    return (n + 1) >> 1;} // return even seted numberstatic int getevenbits(int n){     // get msb here    n = getmsb(n);     // generate even    // bits like 101010..    n |= n >> 2;    n |= n >> 4;    n |= n >> 8;    n |= n >> 16;     // if bits is odd    // then shift by 1    if ((n & 1) == 1)        n = n >> 1;     // return even    // set bits number    return n;} // set all even bits herestatic int setallevenbits(int n){    // take or with even    // set bits number    return n | getevenbits(n);} // Driver Codepublic static void Main (){    int n = 10;     Console.WriteLine(setallevenbits(n));}} // This code is contributed by aj_36
<?php// Efficient php program to set// all even bits of a number // return msb set numberfunction getmsb($n){     // set all bits    $n |= $n >> 1;    $n |= $n >> 2;    $n |= $n >> 4;    $n |= $n >> 8;    $n |= $n >> 16;     // return msb    // increment n by 1    // and shift by 1    return ($n + 1) >> 1;} // return even seted numberfunction getevenbits($n){     // get msb here    $n = getmsb($n);     // generate even bits    // like 101010..    $n |= $n >> 2;    $n |= $n >> 4;    $n |= $n >> 8;    $n |= $n >> 16;     // if bits is odd then    // shift by 1    if ($n & 1)        $n = $n >> 1;     // return even set    // bits number    return $n;} // set all even bits herefunction setallevenbits($n){    // take or with even    // set bits number    return $n | getevenbits($n);}     //Driver code    $n = 10;    echo setallevenbits($n); //This code is contributed by mits?>
<script> // Efficient Javascript program to// set all even bits of a number // Return msb set numberfunction getmsb(n){         // Set all bits    n |= n >> 1;    n |= n >> 2;    n |= n >> 4;    n |= n >> 8;    n |= n >> 16;     // Return msb    // increment n by 1    // and shift by 1    return (n + 1) >> 1;} // Return even seted numberfunction getevenbits(n){         // Get msb here    n = getmsb(n);     // Generate even    // bits like 101010..    n |= n >> 2;    n |= n >> 4;    n |= n >> 8;    n |= n >> 16;     // If bits is odd    // then shift by 1    if ((n & 1) == 1)        n = n >> 1;     // Return even    // set bits number    return n;} // Set all even bits herefunction setallevenbits(n){         // Take or with even    // set bits number    return n | getevenbits(n);} // Driver codelet n = 10; document.write(setallevenbits(n)); // This code is contributed by decode2207  </script>
10
 
Mithun Kumar
jit_t
avijitmondal1998
decode2207
Bit Magic
Bit Magic
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Little and Big Endian Mystery
Cyclic Redundancy Check and Modulo-2 Division
Add two numbers without using arithmetic operators
Josephus problem | Set 1 (A O(n) Solution)
Bit Fields in C
Set, Clear and Toggle a given bit of a number in C
Find the element that appears once
Bits manipulation (Important tactics)
C++ bitset and its application
1's and 2's complement of a Binary Number