willsun888
9/22/2013 - 1:55 PM

求数字n中1的个数

求数字n中1的个数

int number_of_1(int n){
    int count = 0;
    unsigned int flag = 1;
    while(flag){
        if(n & flag)
            count++;
        flag = flag << 1;
    }
    return count;
}

//另一种解法
//一个整数减去1之后再和原来的整数做与运算,得到的结果相当于是把整数的二进制表示中的最右边一个1变成0
int number_of_1(int n){
    int count = 0;
    while(n){
        count++;
        n = (n-1)&n;
    }
    return count;
}