1. 程式人生 > >計算二進位制中有多少個1的五種方法

計算二進位制中有多少個1的五種方法

1.用mol2的方法

 int count(BYTE v){
    int num = 0;
    while (v){
        if (v % 2 == 1){
            num++;
        }
        v/=2;
    }
    return num;
   }

2.使用位運算

int count(BYTE v){
    int num = 0;
    while (v){
        num += v & 0x01;
        v>>1;
    }
    return num;
   }

3.位運算(時間複雜度為O(M))

這種只考慮與1的個數相關,M為1的個數,最為巧妙

int count(BYTE v){
    int num = 0;
    while (v){
        v&=(v-1);
        num++;
    }
    return num;
   }

4.把包含相同個數1的列舉在一起,時間複雜度不能確定。

程式碼就不列了

5.打表,時間複雜度為O(n)