int calc(unsigned int n) { if(0==n) return 32; unsigned int ref=0xFFFF; unsigned int cnt=16; int sum =0; while(n>1) { if(n&ref) { n&=ref; } else { sum+=cnt; n>>=cnt; } cnt>>=1; ref>>=cnt; } return sum;
}
本文介绍了一种通过位操作实现的高效整数计数算法。该算法利用位掩码和位移运算来减少循环次数,从而加快计算速度。适用于需要快速进行位数统计的场景。
int calc(unsigned int n) { if(0==n) return 32; unsigned int ref=0xFFFF; unsigned int cnt=16; int sum =0; while(n>1) { if(n&ref) { n&=ref; } else { sum+=cnt; n>>=cnt; } cnt>>=1; ref>>=cnt; } return sum;
}

被折叠的 条评论
为什么被折叠?