Change all even bits in a number to 0

Last Updated : 22 Jun, 2022

Given a number, change all bits at even positions to 0.

Examples: 

Input : 30
Output : 10
Binary representation of 11110. 
Bits at Even positions are highlighted. 
After making all of them 0, we get 01010

Input :  10
Output :  10

Method 1 (Bit Traversal)

The idea is to traverse through all even bits. We accumulate all powers of 2 in a number to subtract. Finally we subtract the accumulated value from n to obtain the result. 

C++
// C++ program to change even
// bits to 0.
#include <bits/stdc++.h>
using namespace std;

// Returns modified number with
// all even bits 0.
int changeEvenBits(int n)
{
    // To store sum of bits
    // at even positions.
    int to_subtract = 0;

    // To store bits to shift
    int m = 0;

    // One by one put all even
    // bits to end
    for (int x = n; x; x >>= 2) {
        // If current last bit
        // is set, add it to ans
        if (x & 1)
            to_subtract += (1 << m);

        // Next shift position
        m += 2;
    }

    return n - to_subtract;
}

// Driver code
int main()
{
    int n = 30;
    cout << changeEvenBits(n) << endl;

    return 0;
}
Java
// Java program to change even
// bits to 0.
import java.util.*;
class GFG {
    // Returns modified number with
    // all even bits 0.
    static int changeEvenBits(int n)
    {
        // To store sum of bits
        // at even positions.
        int to_subtract = 0;

        // To store bits to shift
        int m = 0;

        // One by one put all even
        // bits to end
        for (int x = n; x > 0; x >>= 2) {
            // If current last bit
            // is set, add it to ans
            if ((x & 1) > 0)
                to_subtract += (1 << m);

            // Next shift position
            m += 2;
        }

        return n - to_subtract;
    }

    // Driver code
    public static void main(String[] args)
    {
        int n = 30;
        System.out.println(changeEvenBits(n));
    }
}
/* This code is contributed by Mr. Somesh Awasthi */
Python3
# Python program to change even
# bits to 0.

# Returns modified number with
# all even bits 0.


def changeEvenBits(n):

    # To store sum of bits
    # at even positions.
    to_subtract = 0

    # To store bits to shift
    m = 0

    # One by one put all even
    # bits to end
    x = n
    while(x):

        # If current last bit
        # is set, add it to ans
        if (x & 1):
            to_subtract += (1 << m)

        # Next shift position
        m += 2
        x >>= 2

    return n - to_subtract


# Driver code
n = 30
print(changeEvenBits(n))

# This code is contributed by Sachin Bisht
C#
// C# program to change even
// bits to 0.
using System;

class GFG {
    
    // Returns modified number with
    // all even bits 0.
    static int changeEvenBits(int n)
    {
        
        // To store sum of bits
        // at even positions.
        int to_subtract = 0;
    
        // To store bits to shift
        int m = 0;
    
        // One by one put all even
        // bits to end
        for (int x = n; x > 0; x >>= 2)
        {
            
            // If current last bit
            // is set, add it to ans
            if ((x & 1) > 0)
            to_subtract += (1 << m);
    
            // Next shift position
            m += 2;
        }
    
        return n - to_subtract;
    }
    
    // Driver code
    public static void Main()
    {
        int n = 30;
        
        Console.Write(changeEvenBits(n)); 
    }
}

// This code is contributed by nitin mittal.
PHP
<?php
// PHP program to change even
// bits to 0.

// Returns modified number with
// all even bits 0.
function changeEvenBits($n)
{
    
    // To store sum of bits
    // at even positions.
    $to_subtract = 0;

    // To store bits to shift
    $m = 0;

    // One by one put all even
    // bits to end
    for ($x = $n; $x; $x >>= 2)
    {
        
        // If current last bit
        // is set, add it to ans
        if ($x & 1)
        $to_subtract += (1 << $m);

        // Next shift position
        $m += 2;
    }

    return $n - $to_subtract;
}

    // Driver code
    $n = 30;
    echo changeEvenBits($n) ;

// This code is contributed by nitin mittal
?>
JavaScript
<script>

// js program to change even
// bits to 0.

// Returns modified number with
// all even bits 0.
function changeEvenBits(n)
{
    
    // To store sum of bits
    // at even positions.
    let to_subtract = 0;

    // To store bits to shift
    let m = 0;

    // One by one put all even
    // bits to end
    for (x = n; x; x >>= 2)
    {
        
        // If current last bit
        // is set, add it to ans
        if (x & 1)
        to_subtract += (1 << m);

        // Next shift position
        m += 2;
    }

    return n - to_subtract;
}

    // Driver code
    n = 30;
    document.write( changeEvenBits(n) );

// This code is contributed by sravan kumar

</script>

Output
10

Time Complexity - O(log n)

Space Complexity - O(1)

Method 2: (Bit masking)

C++
#include <bits/stdc++.h>
using namespace std;

int convertEvenBitToOne(int n) { return (n & 0xaaaaaaaa); }

int main()
{
    int n = 30;
    cout << convertEvenBitToOne(n);
    return 0;
}
Java
// Java program using Bitmask to
// Change all even bits in a
// number to 0
import java.io.*;

class GFG {

    static int convertEvenBitToOne(int n)
    {
        return (n & 0xaaaaaaaa);
    }

    // Driver code
    public static void main(String[] args)
    {
        int n = 30;
        System.out.println(convertEvenBitToOne(n));
    }
}

// This code is contributed by anuj_67.
Python3
def convertEvenBitToOne(n):
    return (n & 0xaaaaaaaa)


# Driver code
n = 30
print(convertEvenBitToOne(n))

# This code is contributed by Sachin Bisht
C#
// C# program using Bitmask to
// Change all even bits in a
// number to 0
using System;

class GFG {

    static long convertEvenBitToOne(int n)
    {
        return (n & 0xaaaaaaaa);
    }

    // Driver code
    public static void Main()
    {
        int n = 30;
        Console.WriteLine(convertEvenBitToOne(n));
    }
}

// This code is contributed by anuj_67.
PHP
<?php 
// PHP program using Bitmask to 
// Change all even bits in a 
// number to 0 

function convertEvenBitToOne($n) 
{ 
    return ($n & 0xaaaaaaaa); 
} 

// Driver Code 
$n = 30; 
echo convertEvenBitToOne($n); 

// This code is contributed by anuj_67. 
?> 
JavaScript
<script>

// java script program using Bitmask to 
// Change all even bits in a 
// number to 0 

function convertEvenBitToOne(n) 
{ 
    return (n & 0xaaaaaaaa); 
} 

// Driver Code 
n = 30; 
document.write(convertEvenBitToOne(n)); 
// This code is contributed by sravan kumar

</script>

Output
10

Time Complexity - O(1)

Space Complexity - O(1)


 

Comment