位运算最常用的两种 *** 作:
1.求整数n二进制表示中第k位(从个位开始算)数字是几:n>>k&1
先把第k位数字移到最后一位 n>>k再看一下个位是几 x&1
2.lowbit *** 作:
lowbit(x)作用是返回x的最后一位1。例如:x=1010,lowbit(x)=10;x=101000,lowbit(x)=1000。
应用是统计x里面1的个数
题目: 代码:#includeusing namespace std; int lowbit(int x){ return x&-x; } int main(){ int n; cin>>n; while(n--){ int x; cin>>x; int res=0; while(x)x-=lowbit(x),res++; //每次减去x的最后一位1 cout< 有关算法竞赛的题目会继续更新,欢迎评论交流!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)