Live2D

二进制中1的个数(Java)

//第一种  n&(n-1)可以使n从右数第一个1变成0  那么能进行几次n&(n-1)  就有几个1
public class Solution {
    public int NumberOf1(int n) {
        int count = 0;
        while(n!=0){
            count++;
            n = n&(n-1);
        }
        return count;
    }
    
    /*
     //第二种 无符号右移
     public int NumberOf1(int n) {
        int count = 0;
        while(n != 0){
            count += (n & 1); //每次判断最低位是否为1
            n >>>= 1;
        }
        return count;
    }
    */
}
posted @ 2021-01-20 11:11  细雪之舞0213  阅读(105)  评论(0)    收藏  举报