剑指offer找数中1的个数

  • 对于如果给定的数全是正数,可以使用循环取模1的方式获取
public int hammingWeight(int n) {
    int sum = 0;
    while(n>1){
        if(n%2==1)sum++;
        n /= 2;
    }
    if(n==1)sum++;
    return sum;
}
  • 通用法,跟1与,然后进行无符号进位的方式求解,可用于有符号整数无符号整数
public int hammingWeight(int n) {
    int sum = 0;
    while(n!=0){
        sum += (n&1);
        n >>>= 1;
    }
    return sum;
}
posted @ 2020-08-25 12:21  珂珂哒  阅读(93)  评论(0)    收藏  举报