输入一个数,判断该整数的二进制中含有多少个‘1’
思路:按位与
#include<stdio.h> int main (void) { int n,count=0; scanf("%d",&n); while(n) { count++; n=n&(n-1); } printf("%d",count); return 0; }
由这道题联想判断一个整数是否为二的N次方
思路:按位与
//注释:如果该数为2的次方,输出yes,否则输出no.
#include<stdio.h> int main (void) { int n,m; scanf("%d",&n); m=n&(n-1); if(m==0) printf("yes"); else printf("no"); return 0; }