《编程之美》 求二进制数中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; }
相关文章推荐
- 二进制中1的个数
- 《编程之美》
- 2012年终碎语,编程之美
- 失业在家的学习笔记-第二天
- 编程之美2015初赛A
- 编程之美初赛B
- 程序员编程艺术3:寻找最小的k个数
- 编程之美2013全国挑战赛资格赛第1题
- 编程之美2013全国挑战赛资格赛第3题
- 编程之美3.8:求二叉树节点的最大距离
- 瓷砖覆盖地板问题
- Best Time to Buy and Sell Stock
- 编程之美2014格格取数
- 编程之美——象棋将帅问题
- 编程之美——烙饼排序问题
- 连连看游戏判断两个块是否可以消去,并计算最小转弯数
- 《编程之美》——中国象棋将帅问题
- 《编程之美》——求二叉树中节点的最大距离(非递归)
- 《编程之美》——求二叉树中节点的最大距离(非递归)
- 《编程之美》——中国象棋将帅问题