求一个数字中二进制(补码)1的个数(三种方法)

//int cut(unsigned int a)
//{
//	int count = 0;
//	while (a)
//	{
//		if (a % 2 == 1)
//		{
//			count++;
//		}
//		a = a / 2;
//	}
//	return count;
//}
//int cut(int a)
//{
//	int count = 0;
//	int i = 0;
//	for (i = 0; i < 32; i++)
//	{
//		if ( ((a >> i) & 1) == 1)
//		{
//			count++;
//		}
//	}
//	return count;
//}
int jingjian(int a)
{
	int count = 0;
	while (a)
	{
		a = a & (a - 1);
		count++;
	}
	return count;
}
int main()
{
	int a = 0;
	scanf("%d", &a);
	printf("count=%d\n", jingjian(a));
	return 0;
}

你可能感兴趣的:(算法,数据结构)