32 条评论
您还未登录,请先
登录
后发表或查看评论
17 条评论
-
Hello_pengzhen 2014.09.13二分法改进一下更容易理解: int BitCount5(unsigned int n) { n = (n &0x55555555) + ((n & ~0x55555555) >>1) ; n = (n &0x33333333) + ((n & ~0x33333333) >>2) ; n = (n &0x0f0f0f0f) + ((n & ~0x0f0f0f0f) >>4) ; n = (n &0x00ff00ff) + ((n & ~0x00ff00ff) >>8) ; n = (n &0x0000ffff) + ((n & ~0x0000ffff) >>16); return n ; }
-
kunpengwang 2013.06.17几种解法的耗时对比: 问题规模:分别计算0~0xf000000中1的个数 结果: 书中解法2:1607ms 书中解法3:1045ms 本文解法1:281 本文解法2:265 从该结果可以看出各个算法的相对性能
-
ajaxhe 2013.02.18楼主提供的二分法,我还没有弄懂,在网上找到了一个更加清楚的解释,很好理解。 int BitCount4(unsigned int n) { n = (n & 0x55555555) + ((n >> 1) & 0x55555555) ; n = (n & 0x33333333) + ((n >> 2) & 0x33333333) ; n = (n & 0x0f0f0f0f) + ((n >> 4) & 0x0f0f0f0f) ; n = (n & 0x00ff00ff) + ((n >> 8) & 0x00ff00ff) ; n = (n & 0x0000ffff) + ((n >> 16) & 0x0000ffff) ; return n ; } 参考链接:http://www.cnblogs.com/graphics/archive/2010/06/21/1752421.html





