Programa Python3 para rotar bits de un número

Rotación de bits: una rotación (o cambio circular) es una operación similar a un 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 caen en el extremo izquierdo se vuelven a colocar en el extremo derecho. 
En la rotación a la derecha, las brocas que caen en el extremo derecho se vuelven a colocar en el extremo izquierdo.
 

Ejemplo: 

Sea n almacenado 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
 

Python3

# Python3 code to
# rotate bits of number
 
INT_BITS = 32
 
# Function to left
# rotate n by d bits
def leftRotate(n, 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
def rightRotate(n, 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)) & 0xFFFFFFFF
 
# Driver program to
# test above functions
n = 16
d = 2
 
print("Left Rotation of",n,"by"
      ,d,"is",end=" ")
print(leftRotate(n, d))
 
print("Right Rotation of",n,"by"
     ,d,"is",end=" ")
print(rightRotate(n, d))
 
# This code is contributed by
# Smitha Dinesh Semwal

Producción : 

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

Complejidad de tiempo: O(1)

Espacio Auxiliar: 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 *