剑指offer 面试题10:二进制中1的个数
二进制中1的个数
提交网址: http://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8?tpId=13&tqId=11164
参与人数:7222 时间限制:1秒 空间限制:32768K
题目描述
输入一个整数,输出该数二进制表示中1的个数。(温馨提示: 计算机中负数用补码表示。)
先贴上代码,然后来详细介绍原理哈...
AC代码:
#include<iostream>
using namespace std;
class Solution {
public:
int NumberOf1(int n) {
int count=0;
while(n != 0)
{
n=n&(n-1); // 每进行一次,将最右侧存有1的bit的值置为0,直到全0,退出循环
count++;
}
return count;
}
};
// 以下为测试
int main()
{
int num1&