本人算法小菜,看见一个非常好的算法,统计一个数的二进制数的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的个数。

相关文章:

  • 2022-12-23
  • 2022-02-01
  • 2021-09-19
  • 2022-12-23
  • 2022-12-23
  • 2021-05-29
  • 2021-12-09
  • 2021-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-11
  • 2021-09-02
  • 2022-12-23
相关资源
相似解决方案