計算二進位制中有多少個1的五種方法
阿新 • • 發佈:2019-01-28
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的列舉在一起,時間複雜度不能確定。
程式碼就不列了