C++用位运算实现循环移位
2015-04-19 17:10
267 查看
转自:http://www.cnblogs.com/alex4814/archive/2011/09/08/2171862.html
循环移位区别于一般移位的是移位时没有数位的丢失。
循环左移时,用从左边移出的位填充字的右端。
循环右移时,用从右边移出的位填充字的左侧。
这种情况在系统程序中时有使用,在一些控制程序中用得也不少。
例如:
a = 01111011,循环左移2位的正确结果是: b=11101101
b = a >> (8 - 2); //用来得到正常左移丢失的位和循环移位后其正确位置 //b=00000001;
a = a << 2; //a = 11101100
a = a | b; //a = 11101101
如果不是用中间变量 a=(a>>(8-2))|(a<<2)
通用:
总长度N(8 16 32)
循环左移n (a >> (N - n)) | (a << n)
循环右移n (a << (N - n)) | (a >> n)
循环移位区别于一般移位的是移位时没有数位的丢失。
循环左移时,用从左边移出的位填充字的右端。
循环右移时,用从右边移出的位填充字的左侧。
这种情况在系统程序中时有使用,在一些控制程序中用得也不少。
例如:
a = 01111011,循环左移2位的正确结果是: b=11101101
b = a >> (8 - 2); //用来得到正常左移丢失的位和循环移位后其正确位置 //b=00000001;
a = a << 2; //a = 11101100
a = a | b; //a = 11101101
如果不是用中间变量 a=(a>>(8-2))|(a<<2)
通用:
总长度N(8 16 32)
循环左移n (a >> (N - n)) | (a << n)
循环右移n (a << (N - n)) | (a >> n)
相关文章推荐
- 转载 C++用位运算实现循环移位
- C++用位运算实现循环移位
- 如何使用位运算实现循环移位?
- 如何使用位运算实现循环移位?
- 如何在C语言使用位运算实现循环移位
- 字符串左旋--循环移位法(c++实现)
- 如何在C语言使用位运算实现循环移位
- 在C语言使用位运算实现循环移位
- 教你如何在C语言使用位运算实现循环移位
- 在C语言使用位运算实现循环移位
- C++中简单实现foreach循环
- 在C++中实现foreach循环
- C++学习笔记-----用位运算实现加减乘除
- 如何用C++来实现在循环链表里展示除了最后一个节点,然后返回所展示的节点总和
- stackoverflow | C/C++ | 如何不使用循环和判断语句实现“打印从1到100之间的数字”
- 【C++数据结构】数组循环队列的实现
- C++中数组的普通移位和循环移位
- 数据结构基础——循环队列的C++实现
- C++类模板 实现双向循环链表的基本算法 《数据结构》(C++版 北京科海)中摘抄
- [C++] for循环实现九九乘法表