介绍
循环移位运算是把数值变成二进制然后进行循环移动的运算。用到循环移位的操作时,在汇编里面是比较容易实现的,ror,rol指令就行了。利用位运算进行循环移位操作比较容易理解。如果不是循环移位,使用xn右移n位。
循环移位也容易理解。比如我们有个1字节的数: x = 10111110。现在需要对其循环右移4位。也就是最后结果为x = 11101011。其实思路就是分离数据,我们需要提取出前四位1011,后四位1110。其实我们需要两个数的或操作,也就是00001011,11100000,我们只要得到这两个数然后让他们就行或操作:00001011|11100000 =11101011。把10111110 右移4位变为00001011(x>>4),把10111110左移4位变为11100000(x(N - n) ) | (x1; a=a|rb; } return(a); }main() { unsigned rightrot(unsigned a,int n); unsigned inta,b; int n; printf("enteraandn:"); scanf("%x,%x",&a,&n); printf("a=%x,n=%d\n",a,n); b=rightrot(a,n); printf("b=%x\n",b); }