剑指OFFER--二进制中1的个数

来源:互联网 发布:供销大数据集团多少人 编辑:程序博客网 时间:2024/06/08 00:06

题目描述

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

int NumverOf1(int n){    int count=0;    while(n)    {        ++count;        n=(n-1)&n;    }    return count;}

分析

这里写图片描述

我们会发现每次n&(n-1)都会把n中的一个1变成0;

然后count++;

所以循环结束n=0;count等于n的二进制数中1的个数。

原创粉丝点击