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

题目:

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

思路:

将该数n与n-1做与运算,每次与运算完会减少一个1,因此能做多少次与运算就有多少个1。

代码:

在线测试OJ:

https://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8?tpId=13&tqId=11164&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

AC代码:

class Solution {
public:
     int  NumberOf1(int n) {
	int count=0;
	while(n)
	{
		n=n&(n-1);
		count++;
	}
	return count;
     }
};

猜你喜欢

转载自blog.csdn.net/u012991043/article/details/81035619
今日推荐