快速计算一个整数的二进制中1的个数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/little_white__/article/details/86499802

如题,如何快速计算一个整数中二进制的个数:

思路:
如果一个数减一:1.末尾是1的话,变为0;
2.末尾是0的话, 向前借位,被借的位变成0,之后的位变为1;例如:10100b --> 10011b。
因此(num - 1)& num 就把最后一个1消去了。只要循环1的个数次,不用循环二进制的个数次。

int cout1(int num)
{
	int cout = 0;
	while(num)
	{
		cout++;
		num = (num - 1) & num;
	}
	return cout;
}

猜你喜欢

转载自blog.csdn.net/little_white__/article/details/86499802