一个非常有用的算法---统计二进制数中1的个数
2015-06-28 09:44
295 查看
本人算法小菜,看见一个非常好的算法,统计一个数的二进制数的1的个数。觉得不错,与大家分享。
下面是个人的一点解释(欢迎拍砖)
比如一个数x的二进制后面几位是1000.
x-1的二进制后面几位变成了 0111.
二者&,变成了 0000。
而对于原数x的二进制数而言,就从右端减少了一个1。所以上述算法是计算二进制1的个数。
int fun(int x){ int count = 0; while(x){ count++; x = x &(x-1) } return count; }
下面是个人的一点解释(欢迎拍砖)
比如一个数x的二进制后面几位是1000.
x-1的二进制后面几位变成了 0111.
二者&,变成了 0000。
而对于原数x的二进制数而言,就从右端减少了一个1。所以上述算法是计算二进制1的个数。
相关文章推荐
- 数学-矩阵计算(4)两种布局
- Restful WebService简单介绍
- ACdream 1115 Salmon And Cat (找规律&&打表)
- 4、数论
- HDU动态规划解析
- 读《MacTalk·人生元编程》及Mac常用软件
- 提示模版
- 1、数理逻辑
- Eclipse配色方案插件
- linux 下MySQL服务器的启动与停止
- [Tyvj 1038] 忠诚
- Remove Duplicates from Sorted List II simple and fast
- 嵌入式Linux 挂载完根文件系统后,自动执行的文件分析
- 3.1.2 字符串格式化
- 会议
- 3.1.2 字符串格式化
- 感受数据结构的魅力:记一次查找性能优化
- 面试 :如何写一个满分的strcpy!!!
- linux中sed的用法详解
- 从缓存行出发理解volatile变量、伪共享False sharing、disruptor