| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 883 人关注过本帖, 1 人收藏
标题:1的个数?
只看楼主 加入收藏
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:0 
学习了。。
2011-04-19 09:46
彼时彼岸
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2011-4-14
收藏
得分:0 
来偷偷滴。。窃取经验。。
2011-04-19 09:52
autumn1202
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:64
专家分:553
注 册:2011-2-21
收藏
得分:0 
四楼的比较巧妙啊,结果就是逐渐把高位降位后加到最低位,0x55是为了降偶数位,0x33是为了降3,4位和7,8位,最后0x0f即把高4位加到低四位上,得到结果
不过相比较二楼,四楼的只适合单字节类型的,如果是多字节的,有三种方法,
1.直接用2L的
2. 拆成单字节,用四L的方法
3.

int n;
int num = 0;
 while(n)
{
    n &= n - 1;
    num++;
}
思想就是通过n &= n - 1每次都能把最低位的1变成0。所以复杂度是O(N),N为1的个数


[ 本帖最后由 autumn1202 于 2011-4-19 10:19 编辑 ]
2011-04-19 10:15
天谈2011
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2011-3-27
收藏
得分:0 
谢谢各位高手的帮助!
2011-04-19 12:38
快速回复:1的个数?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011980 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved