《剑指Offer》 二进制中1的个数

来源:互联网 发布:淘宝黑搜索技术 编辑:程序博客网 时间:2024/05/01 23:56

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

思路:
设置初始count=0,先进行++count,并做n=n&(n-1),就是为了从右往左计算1的值。因为负数是用补码表示的,所以也是同样道理。
代码:

class Solution {public:     int  NumberOf1(int n) {         int count=0;         while(n){             ++count;             n=n&(n-1);//从右往左计算1的个数         }         return count;     }};

输出结果: 运行时间: <1 ms 占用内存:8568K 状态:答案正确

0 0