那些不得不惊叹的位运算
2016-04-24 18:17
218 查看
1. 最简单莫过于用移位实现乘除运算了,置位运算也比较简单
8个bit的整形循环左移k位
8个bit的整形循环右移k位
3.^(异或)运算,计算反码
4. x=x&(x-1)//将x最低位的1置0;
5.异或实现,两个存储单源,交换元素
int a=10; a>>=1;//a=5;右移=除法,右移一位除以2; a<<=2;//a=20;左移=乘法,左移一位乘以2;2. 循环移位
8个bit的整形循环左移k位
int a=10;//a<=255,8个bitint b=(a>>k)|(a<<8-k);
8个bit的整形循环右移k位
int a=129; int c=(a<<k)&255|(a>>8-k)
3.^(异或)运算,计算反码
unsigned char a=254; a^=255;
4. x=x&(x-1)//将x最低位的1置0;
//判断是否为2的整数次方 int Is2Pow(int x) { if( (x&(x-1)) == 0 ) return 1; else return 0; }
//统计x中1的个数 int countx = 0,x=15; while(x) { countx ++; x = x&(x-1);//每次把最低位1置0 } cout<<countx<<endl;
5.异或实现,两个存储单源,交换元素
int a=2,b=3; a=a^b; b=a^b; a=a^b;用加减法实现
a=a+b; b=a-b; a=a-b
相关文章推荐
- OpenGL学习之路(三)
- LoaderManager使用详解(一)---没有Loader之前的世界
- android 框架 Afinal 解析
- AngularJs
- 单例模式代码块
- leetcode-70. Climbing Stairs
- 使用 Git 改进工作方式
- 以后还是要多写点博客
- 20145233韩昊辰 第三次实验报告
- [读书笔记] CSS权威指南2: 结构和层叠
- 团队冲刺第一阶段个人工作总结6
- 学习笔记(七)广播
- HDU 4341-分组背包/01背包
- winform datagridview实时更新显示查询结果
- leetcode 112.Path Sum-数路径和|深度遍历
- coredata简单使用,插删改查
- 【dp-状态压缩】炮兵阵地
- Sublime——快捷键大全
- UVA_437_The Tower of Babylon
- 我的学习之路-JAVA-01