求二进制中1的个数,算法看不懂!请教!

lishuailw · · 987 次点击
想这个算法的人肯定是一个人才,uint64他就当成uint8,把全世界的内存用上,都不够他算法用
#4
更多评论
这个很简单啊,有啥看不懂的…… ``` pc[0]=0 pc[1]=pc[0]+1 //1 pc[2]=pc[1]+0 //1 ``` 保证了0,1,2三个都是对的 当i>2时 pc[n]等于 pc[n/2]+最后一位是否为1 pc n/2代表 2进制时前N位的累积 在加上最后以为,那么自然就是各个位上的数的总和了。 里面唯一要注意的点就是,整数操作的 / 是不计余数的整除,以及 byte是无符号的,byte(i&1)的值是0或1
#2