xiwrong的ChinaUnix博客xiwrong.blog.chinaunix.net
xiwrong
全部博文(50)
2011年(50)
张子萌
tomhorse
jieyanca
gxulgc
分类: C/C++
2011-11-15 19:09:45
求函数返回值,输入x=9999; int func ( x ){ int countx = 0; while ( x ) { countx ++; x = x&(x-1); } return countx; } 结果呢?知道了这是统计9999的二进制数值中有多少个1的函数,且有9999=9×1024+512+256+15
9×1024中含有1的个数为2;512中含有1的个数为1;256中含有1的个数为1;15中含有1的个数为4;故共有1的个数为8,结果为8。1000 - 1 = 0111,正好是原数取反。这就是原理。用这种方法来求1的个数是很效率很高的。不必去一个一个地移位。循环次数最少。
上一篇:可编程内存的三大分类
下一篇:深入探讨MFC消息循环和消息泵
登录 注册