您的位置:首页 > 其它

位运算的小技巧

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
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: