当前位置: 代码迷 >> 综合 >> 位运算、lowbit()算法
  详细解决方案

位运算、lowbit()算法

热度:77   发布时间:2023-11-25 22:52:33.0

讲解视频:

求n的二进制表示

lowbit()运算

简单应用:

地址:

代码:


讲解视频:

  https://www.acwing.com/video/14/

求n的二进制表示

 

//已知10的二进制表示是1010
#include <iostream>
#include <string.h>
int main(){
int n=10;
for(int k=3;k>=0;k--) cout<<(n>>k&&1);
return 0;
}

lowbit()运算

 注意这里返回最后一位1的意思是:

例如一个数为101000,那么它返回的是1000

简单应用:

求二进制中1的个数

地址:

https://www.acwing.com/problem/content/803/

代码:

#include <iostream>
using namespace std;
int lowbit(int x){return x&-x;
}
int main(){int n;cin>>n;while(n--){int x;cin>>x;int res=0;//存储的是二进制数中1的个数//5的二进制是101,一次100,两次000//当x不等于0时,不断的减去最后一位1,并把1的个数+1while (x) {x-=lowbit(x);res++;}// for(int i=x;i>0;){//     i-=lowbit(i);//     res++;// }cout <<res;
}
}