Intercambiar cada dos bits en bytes

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.
 

Publicación traducida automáticamente

Artículo escrito por saumya16 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 *