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

【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】

题目链接:?rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

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

思路

我们知道,当一个数减去1之后,那么对于这个数最右边的1变成了0,那么原本这个位置之后的0则全部变成了1,那么我们执行(n-1)&n,就可以使得一个n的二进制最右边的1变成0,然后我们只需要统计这个过程执行了多少次就能统计出到底n的二进制有多少个1

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

版权声明:本文为博主原创文章,如果转载,请注明出处

回首往事,日子里竟全是斑澜的光影,

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

相关文章:

你感兴趣的文章:

标签云: