Red de conocimientos sobre prescripción popular - Remedios caseros - ¿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.

¿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.

Muy sencillo. Si usa la cadena 01 para representar binario, entonces matlab tiene una función circshift lista para usar, el método es el siguiente:

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

& 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.