lowbit(x) : 返回x二进制表示的最后一位1;
eg:
lowbit(10) : 即返回10的二进制表示:1010的最后一位1:即10;
10010101000 最后一位1为1000;
代码实现:
int lowbit(int x)
{ return x&(-x);
}
ps:
-x指对先求反码再加一;
之后对x进行&运算可以得到最后一位1;
ps:
1&1=1;
1&0=0;
0&0=0;
#include<iostream>
using namespace std;
int lowbit(int x)
{
return x&(-x);
}
int main()
{
int n;
int x;
cin>>n;
int res=0;
while(n--)
{
cin>>x;
while(x)x-=lowbit(x),res++;
cout<<res<<" ";
res=0;
}
return 0;
}
这篇博客介绍了如何通过位操作找到一个整数二进制表示中的最后一位1。提供了代码实现`lowbit(x)`函数,该函数返回`x`的二进制表示中最后一位1的值。示例展示了对于输入10,返回10,因为10的二进制表示为1010。同时,代码在循环中使用此函数,用于累加计算。
764

被折叠的 条评论
为什么被折叠?



