两种方法:第一种方法用1来与数字做与运算,结果为不为0,继续循环
第二种方法是i&(i-1);
#include<stdio.h>
#include<string.h>
int NumberOf1_Suluton1(int i) {
int count = 0;
while (i) {
count++;
i &= (i - 1);
}
return count;
}
int NumberOf1_Sulution2(int i) {
int count = 0;
int Flag = 1;
while (Flag) {
if (Flag & i)
count++;
Flag <<= 1;
}
return count;
}
int main(void) {
int i = 2;
printf("%d\n", NumberOf1_Suluton1(i));
printf("%d\n", NumberOf1_Sulution2(i));
return 0;
}