统计一个整数转换成二进制数后1的个数

两种方法:第一种方法用1来与数字做与运算,结果为不为0,继续循环
第二种方法是i&(i-1);

#include
#include

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;
}

你可能感兴趣的:(编程语言#,C语言,程序员面试)