Cambiar todos los bits pares de un número a 0

Dado un número, cambie todos los bits en posiciones pares a 0.

Ejemplos: 

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

Método 1 (recorrido de bits)

La idea es atravesar todos los bits pares. Acumulamos todas las potencias de 2 en un número a restar. Finalmente restamos el valor acumulado de n para obtener el resultado. 

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>
Producción

10

Complejidad del tiempo – O(log n)

Complejidad espacial – O(1)

Método 2: (Enmascaramiento de bits)

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>
Producción

10

Complejidad del tiempo – O(1)

Complejidad espacial – O(1)

Este artículo es una contribución de RISHABH RAJ JHA . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *