剑指offer—二进制中1的个数

来源:互联网 发布:知乎周刊如何在kindle 编辑:程序博客网 时间:2024/06/06 16:52

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

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

思路:利用1100这个数字举例子,1100-1=1011&1100等于1000,也就是说一个二进制数每次减1在与它本身相与,则会去掉这个二进制数中最低位的1,循环到这个数为0时,利用一个计数标志位,则知道这个二进制数中1的个数了。

原创粉丝点击