¿Cómo implementar un desplazamiento circular hacia la izquierda de números binarios en matlab? Por ejemplo, para el número binario: 0100111, después de un desplazamiento circular de 2 bits, se convierte en: 0001101.
circshift(a ', -n)'
Usted Solo necesita ingresar la cadena binaria A y el número de dígitos N que deben desplazarse hacia la izquierda para obtener la respuesta. Por ejemplo:
& gt& gta = ' 10011110 '; n = 1; circshift(a ', -n)'
ans =
00111101 p >
& gt& gta = ' 10011110 '; n = 2; circshift(a ', -n)'
ans =
01111010
& gt& gta = ' 10011110 '; n = 3; circshift(a ',-n)'
ans =
11110100
& gt& gta = ' 10011110 '; n = 4; circshift(a ', -n)'
ans =
11101001
Si el segundo parámetro de la función circshift en sí es regular Si es negativo, se mueve hacia la derecha. Si es negativo, se mueve hacia la izquierda. Y puede usarse para cambiar matrices de cualquier dimensión, así que no diré más a menos que hagas una pregunta.
Si en lugar de utilizar la cadena 01, utilizas la forma binaria interna de tu propio valor, existen dos métodos. Una es usar la función dec2bin para convertirla en una cadena binaria, agregar 0 a la izquierda para expandirla a la cantidad de dígitos que necesita y luego usar la función circshift anterior.
Otro método es utilizar la función bitshift, pero es un poco más complicado determinar la longitud del tipo de datos, con o sin signo, y si el bit más alto es 1 o 0. A menudo, puede simplificar estos problemas combinándolos con la función fi. Para obtener más información, puede consultar la documentación de las funciones bitshift y fi.