位运算的小技巧
2016-02-23 19:18
337 查看
偶然从别人的blog那里看到,觉得挺有用就写成代码了,附原博客地址:http://www.cnblogs.com/avril/p/3282295.html
#include<cstdio> #include<iostream> #include<cstring> #include<cmath> using namespace std; void pd_01(int x)//判断x的二进制任意位是0是1 { for (int i=0;i<=log2(x);i++) if (x&(0X1<<i)) printf("1"); else printf("0"); } void update_1(int &x,int i)//使x的二进制第i+1位(最右边为第1位)变为1 { x=x|(0X1<<i); } void update_0(int &x,int i)//使x的二进制第i+1位变为0 { x=x&(~(0X1<<i)); } void update_qufan(int &x,int i)//使x的二进制第i+1位取反 { x=x^(0X1<<i); } int get_last(int x)//取出x的最后一个1 { return x&(-x); } main() { printf("%d",get_last(5));//输出1 printf("%d",get_last(6));//输出2 printf("%d",get_last(8));//输出8 }
相关文章推荐
- android绘图canvas.drawBitmap方法的作用
- unable to find valid certification path to requested target或Certificate chaining error的解决办法
- 待字闺中之巧妙排序分析:
- nginx源码初读(7)--让烦恼从数据结构开始(ngx_queue)
- java基础总结(四)
- 二级域名session 共享方案
- eclipse下开发java项目 -- 前端开发想使用 sublime怎么办?(借助gulp自动发布)
- Facade 设计模式
- 使用HttpClient进行远程接口测试
- uibutton点击按钮时title变大 松开时变小
- 自定义View与merge节点
- Ubuntu中安装oracle java和Eclipse
- TLD学习之剥离Randrom Fern
- LeetCode 30 Substring with Concatenation of All Words--In Java
- JVM性能监控与故障处理工具
- Apple Pay--iOS开发
- Centos 挂载NTFS格式的USB硬盘
- ZOJ-1586QS Network(prim)
- 使用RNN解决NLP中序列标注问题的通用优化思路
- 0016-jQuery选择器与CSS选择器