您的位置:首页 > 编程语言

《编程之美》 求二进制数中1的个数

2015-10-19 11:19 246 查看
#include <stdio.h>

//常规解法,求余运算比较耗时可优化
int countV1(int num){
int result = 0;
while (num){
if (num % 2)
result++;
num /= 2;
}
return result;
}

//用位运算优化
int countV2(int num){
int result = 0;
while (num){
result += (num & 1);
num >>= 1;
}
return result;
}

//位运算取巧
int countV3(int num){
int result = 0;
while (num){
num &= (num - 1);
result++;
}
return result;
}

//还可以用循环展开,打表等方式优化,甚至还可以用位运算继续优化,衡量代码运行时间优劣的尺度细致到了时钟周期,汇编层面了,真是丧心病狂

int main(){
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息