整数二进制中1的个数

来源:互联网 发布:教育类直播软件 编辑:程序博客网 时间:2024/05/16 13:01
按照《编程之美》书上的方法
int Count(int n){int num=0;while(n){if(n%2==1)num++;n/=2;}return num;}int Count(int n){int num=0;while(n){num+=n & 0x01;n>>=1;}return num;}int Count(int n){int num=0;while(n){n&=(n-1);num++;}return num;}int Count(int n){int num=0;int flag=1;while(flag){if( n & flag)num++;flag<<=1;}return num;}

参见http://blog.csdn.net/justpub/article/details/2292823提供的方法
int Count(unsigned n){n=n-((n>>1) & 0x55555555);n=(n & 0x33333333) + ((n>>2) & 0x33333333);n=(n+ (n>>4)) & 0x0F0F0F0F;n=n+(n>>8);n=n+(n>>16);return n & 0x0000003F;}

原创粉丝点击