本人算法小菜,看见一个非常好的算法,统计一个数的二进制数的1的个数。觉得不错,与大家分享。
1 int fun(
int x){
2 int count =
0;
3 while(x){
4 count++
;
5 x = x &(x-
1)
6 }
7 return count;
8 }
下面是个人的一点解释(欢迎拍砖)
比如一个数x的二进制后面几位是1000.
x-1的二进制后面几位变成了 0111.
二者&,变成了 0000。
而对于原数x的二进制数而言,就从右端减少了一个1。所以上述算法是计算二进制1的个数。
转载于:https://www.cnblogs.com/plxx/p/4605124.html
相关资源:数据结构—成绩单生成器