1.自然语言描述
将一个十进制数转换为二进制数,方便一些情况的处理。
例如:
x&1:将x转换为二进制数,和1做与运算,这样可以得到x最低位。
x>>=k:将x右移k位,相当于x=x*2^(-k)。
基于基本的逻辑运算规则,位运算往往能较快地完成,是个节省时间的好东西。
2.代码描述
题目:Acwing.801 二进制中1的个数题目链接
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN=1e5+10;
int n,s[MAXN];
int main(void)
{
cin>>n;
for(int i=0;i<n;i++)
cin>>s[i];
for(int i=0;i<n;i++){
int mid=s[i];
int cnt=0;
while(mid){
if(mid&1)
cnt++;
mid>>=1;
}
s[i]=cnt;
}
for(int i=0;i<n;i++)
cout<<s[i]<<' ';
cout<<endl;
return 0;
}