Intercambia todos los pares de bits en un byte. Antes del intercambio: 11-10-11-01 Después del intercambio: 11-01-11-10
Ejemplos:
Input : 00000010 Output : 00000001 Input : 00000100 Output : 00001000
Enfoque:
x = ((x & 0x55555555) >> 1) | ((x & 0xAAAAAAAA) <> 1 extrae la posición del bit alto y la cambia a la posición del bit bajo.
De manera similar, la expresión (x & 0xAAAAAAAA) << 1 extrae el bit bajo de cada par y lo cambia a la posición del bit alto.
Luego, las dos partes se combinan usando OR bit a bit.
x= 00011010 ((x & 0xAAAAAAAA) >> 1) = 00001010 >> 1 = 00000101 ((x & 0x55555555) << 1) = 00010000 <> 1) | ((x & 0x55555555) << 1) = 00100101
A continuación se muestra la implementación de la idea anterior:
C++
// C++ program to swap every two bits in a byte. #include<bits/stdc++.h> using namespace std; unsigned int swapBitsInPair(unsigned int x) { // Extracting the high bit shift it to lowbit // Extracting the low bit shift it to highbit return ((x & 0xAAAAAAAA) >> 1) | ((x & 0x55555555) << 1); } /* Driver function to test above function */ int main() { unsigned int x = 4; cout << swapBitsInPair(x); return 0; } // This code is contributed by Kasina Dheeraj.
Java
// Java program to swap every // two bits in a byte. import java.util.*; class GFG { static int swapBitsInPair( int x) { // Extracting the high bit shift it to lowbit // Extracting the low bit shift it to highbit return ((x & 0xAAAAAAAA) >> 1) | ((x & 0x55555555) << 1); } // Driver Function public static void main(String[] args) { int x = 4; System.out.print(swapBitsInPair(x)); } } // This code is contributed by Gitanjali.
Python3
# Python program to swap every # two bits in a byte. import math def swapBitsInPair( x): # Extracting the high bit shift it to lowbit # Extracting the low bit shift it to highbit return ((x & 0xAAAAAAAA) >> 1) or ((x & 0x55555555) << 1) # driver Function x = 4; print(swapBitsInPair(x)) # This code is contributed by Gitanjali.
C#
// C# program to swap every two bits in a byte. using System; public class GFG{ static uint swapBitsInPair(uint x) { // Extracting the high bit shift it to lowbit // Extracting the low bit shift it to highbit return ((x & 0xAAAAAAAA) >> 1) | ((x & 0x55555555) << 1); } // Driver function to test above function static public void Main () { uint x = 4; Console.WriteLine(swapBitsInPair(x)); } } // This code is contributed by vt_m.
PHP
<?php // PHP program to swap every // two bits in a byte. function swapBitsInPair($x) { // Extracting the high bit // shift it to lowbit // Extracting the low bit // shift it to highbit return (($x & 0xAAAAAAAA) >> 1) | (($x & 0x55555555) << 1); } // Driver Code $x = 4; echo swapBitsInPair($x); // This code is contributed by mits ?>
Javascript
<script> // java script program to swap every // two bits in a byte. function swapBitsInPair(x) { // Extracting the high bit // shift it to lowbit // Extracting the low bit // shift it to highbit return ((x & 0xAAAAAAAA) >> 1) | ((x & 0x55555555) << 1); } // Driver Code let x = 4; document.write( swapBitsInPair(x)); // This code is contributed by sravan kumar </script>
Producción:
8
Complejidad de tiempo: O(1)
Complejidad espacial: O(1)
Referencia:
https://stackoverflow.com/questions/4788799/swap-every-pair-of-bits-in-byte
Este artículo es una contribución de Saumya y ha sido mejorado por Kasina Dheeraj . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@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.