什么是左循环位移和右循环位移,它们的区别是什么

如题所述

循环移位就是在移位的时候,移出去的位不是丢掉,而是补到另一边。
循环移位在汇编中可以用指令实现,在C语言中没有这种运算符,比较麻烦。
以32位移位来说,可以定义如下两个宏
#define ROTATE_LEFT(x,n) (((x)<<(n))|((x)>>(32-(n))))
#define ROTATE_RIGHT(x,n) (((x)>>(n))|((x)<<(32-(n))))
分别是将x左移和右移n位,注意x应为无符号长整型,n不要超出范围。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-10-21
比如一个二进制数
11000101
左循环位移 2位就是
00010111
右循环位移 2位就是
01110001
相似回答