二進制中1的個數

方法一:
輸入x,進行32次右移位運算,每次&1(確定該位是否為1),若該位為1則在計數變數上加1,最后輸出計數變數,
#include<bits/stdc++.h>
using namespace std;
#define N 100005
int main(){
int x,n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
int res=0;
scanf("%d",&x);
for(int j=31;j>=0;j--)
{
if((x>>j)&1) res++;
}
printf("%d ",res);
}
return 0;
}
方法二:
-x的二進制等于x的二進制每一位取反再在最后一位上加1,-x與x的二進制相比,只有最后一個1以及后面位數相同,所以x&(-x)可得到相同部分,x減去相同部分后,再次進行上述操作并計數,直到x為0,輸出計數變數,
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,x;
scanf("%d",&n);
while(n--)
{
int res=0;
scanf("%d",&x);
while(x)
{
x-=(x&(-x));
res++;
}
printf("%d ",res);
}
return 0;
}
待八戒審核,不敢懈怠…
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/20202.html
標籤:其他
上一篇:從外賣員到程式員,自學3年終于轉行成功,三面“拿下”拼多多
下一篇:深度學習(一):什么是深度學習
