二进制中1的个数

孤街浪徒 提交于 2020-02-10 11:03:28

题目描述

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

public class Solution {
    public int NumberOf1(int n) {
        int count = 0;//二进制中1的个数
        while(n!= 0){
            count++;//如果1个整数不为0,那么它的二进制最起码有1个1
            n = n & (n - 1);//n&(n-1)实现将n的最右边一个1去掉;
         }
        return count; 
    }
}

tips:
非零整数减1,那么原来处在整数二进制最右边的1就会变为0,原来在1后面的所有0都会变成1,其余所有位将不会受到影响。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!