您的位置:首页 > 其它

移位运算解决问题的例子

2012-11-07 22:21 120 查看
巧用(n-1)&n 可以让n二进制最低位的1变成0

1:判断一个数是否是2的次方
bool f(int n){ return ((n-1)&n==0);}
如果一个数是2的次方,那么这个数的二进制中就只有一个1。

(n-1)&n可以让n二进制最低位的1变成0,如果n二进制只有一个1那么n做该种运算后就会变成0。

2:求一个数二进制中1的位数
int f(int n)
{
int count=0;
while(n)
{
count++;
n=(n-1)&n;
}
return count;
}

3:判断一个数奇偶性
bool isEven(int n)
{
if(n&1==1) return false;
else return true;
}

4:对一个正整数除以2得到约数
n>>1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: