Related Articles

Related Articles

Set all even bits of a number
  • Difficulty Level : Medium
  • Last Updated : 18 Jul, 2018

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Simple Java program to set all even
// bits of a number
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(String[] args)
    {
        int n = 4;
         System.out.println(evenbitsetnumber(n));
    }
}
  
// This code is contributed 
// by  prerna saini. 

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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 = 10
print(evenbitsetnumber(n))
  
# This code is contributed
# by Smitha Dinesh Semwal

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// Simple C# program to set 
// all even bits of a number
using 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. 

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?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 
?>

chevron_right


Output:

10

Method 2 (A O(1) solution for 32 bit numbers)

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// Efficient CPP program to set all even
// bits of a number
#include <iostream>
using namespace std;
  
// return msb set number
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 number
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)
        n = n >> 1;
  
    // return even set bits number
    return n;
}
  
// set all even bits here
int setallevenbits(int n)
{
    // take or with even set bits number
    return n | getevenbits(n);
}
  
int main()
{
    int n = 10;
    cout << setallevenbits(n);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Efficient Java program to 
// set all even bits of a number
import java.io.*;
  
class GFG 
{
      
// return msb set number
static 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 number
static 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 here
static int setallevenbits(int n)
{
    // take or with even
    // set bits number
    return n | getevenbits(n);
}
  
// Driver Code
public static void main (String[] args)
{
    int n = 10;
    System.out.println(setallevenbits(n));
}
}
  
// This code is contributed by ajit

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Efficient Python 3
# program to set all even
# bits of a number
  
# return msb set number
def 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 number
def 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
   
  
# set all even bits here
def setallevenbits(n):
      
    # take or with even set bits number
    return n | getevenbits(n) 
   
n = 10 
print(setallevenbits(n)) 
  
# This code is contributed by
# Smitha Dinesh Semwal

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// Efficient C# program to 
// set all even bits of a number
using System;
  
class GFG
{
      
// return msb set number
static 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 number
static 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 here
static int setallevenbits(int n)
{
    // take or with even
    // set bits number
    return n | getevenbits(n);
}
  
// Driver Code
public static void Main ()
{
    int n = 10;
  
    Console.WriteLine(setallevenbits(n));
}
}
  
// This code is contributed by aj_36

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Efficient php program to set 
// all even bits of a number
  
// return msb set number
function 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 number
function 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 here
function 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 
?>

chevron_right


Output:

10

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :