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