Programa Java para rotar bits de un número

Rotación de bits: una rotación (o cambio circular) es una operación similar al cambio, excepto que los bits que se caen en un extremo se vuelven a colocar en el otro extremo. 
En la rotación a la izquierda, las brocas que se caen en el extremo izquierdo se vuelven a colocar en el extremo derecho. 
En la rotación a la derecha, las brocas que se caen en el extremo derecho se vuelven a colocar en el extremo izquierdo.
 

Ejemplo: 
Let n se almacena usando 8 bits. La rotación a la izquierda de n = 11100101 por 3 hace que n = 00101111 (se desplaza a la izquierda por 3 y los primeros 3 bits se vuelven a colocar en último lugar). Si n se almacena utilizando 16 bits o 32 bits, la rotación a la izquierda de n (000…11100101) se convierte en 00..00 11100101 000.  La
rotación a la derecha de n = 11100101 por 3 hace que n = 10111100 (desplazado a la derecha por 3 y los últimos 3 bits son volver a poner primero) si n se almacena usando 8 bits. Si n se almacena utilizando 16 bits o 32 bits, la rotación a la derecha de n (000…11100101) por 3 se convierte en 101 000..00 11100
 

Java

// Java code to rotate bits 
// of number
class GFG 
{
static final int INT_BITS = 32;
  
/*Function to left rotate n by d bits*/
static int leftRotate(int n, int d) {
      
    /* In n<<d, last d bits are 0. 
       To put first 3 bits of n at
       last, do bitwise or of n<<d with
       n >>(INT_BITS - d) */
    return (n << d) | (n >> (INT_BITS - d));
}
  
/*Function to right rotate n by d bits*/
static int rightRotate(int n, int d) {
      
    /* In n>>d, first d bits are 0. 
       To put last 3 bits of at
       first, do bitwise or of n>>d 
       with n <<(INT_BITS - d) */
    return (n >> d) | (n << (INT_BITS - d));
}
  
// Driver code
public static void main(String arg[]) 
{
    int n = 16;
    int d = 2;
    System.out.print("Left Rotation of " + n +
                          " by " + d + " is ");
    System.out.print(leftRotate(n, d));
      
    System.out.print("
Right Rotation of " + n +
                             " by " + d + " is ");
    System.out.print(rightRotate(n, d));
}
}
  
// This code is contributed by Anant Agarwal.

Producción : 

Left Rotation of 16 by 2 is 64
Right Rotation of 16 by 2 is 4

Para número de 16 bits:

Java

/*package whatever //do not write package name here */
  
import java.io.*;
  
class GFG {
    public static void main (String[] args) {
        int N=28;
        int D=2;
        rotate(N,D);
    }
  
static void rotate(int N, int D)
    {
        // your code here
        int t=16;
        int left= ((N<<D) | N>>(t-D)) & 0xFFFF;
        int right=((N>>D) | N<<(t-D)) & 0xFFFF;
        System.out.println(left);
        System.out.println(right);
    }
  
}

Producción:

Left Rotation of 28 by 2 is 112
Right Rotation of 28 by 2 is 7

Complejidad de tiempo : O(1)

Complejidad espacial : O(1)

Consulte el artículo completo sobre Rotar bits de un número para obtener más detalles.

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 *