剑指offer---求二进制表示中1的个数

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

题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

思路:
将二进制数与自身-1进行与操作,可以消掉最右边的1,所以我们循环进行这种操作直到数值变成全0即可。操作的次数就是1的个数。

int  NumberOf1(int n) {
	int cnt = 0;
	while (n)
	{
		n = n & (n - 1);
		cnt++;
	}
	return cnt;
}

猜你喜欢

转载自blog.csdn.net/Android_chunhui/article/details/87926046
今日推荐