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