写一个函数返回参数二进制中1的个数(三种方法)

  

1。运用了除法,取余方式递推出结构
2。运用右移符(在祝辞)运算
3。利用算术与(和)运算

  

三种方法效率越来越高,减少成本

  
 <代码> # include
  
  int Number1 (int n)
  {
  int k;
  int数=0;
  而(n比;0)
  {
  k=n % 2;
  n/=2;
  如果(1==k)
  {
  数+ +;
  }
  }
  返回计数;
  }
  
  int科学(int n)
  {
  int数=0;
  而(n> 0)
  {
  如果(n,1)==1)
  {
  数+ +;
  }
  n=n祝辞祝辞1;
  }
  返回计数;
  }
  
  int Number3 (int n)
  {
  int数=0;
  而(n)
  {
  n=n& (n - 1);
  数+ +;
  }
  返回计数;
  }
  int main ()
  {
  int n;
  printf(“请输入一个数:\ n”);
  scanf (“% d”,和n);
  int ret1=Number1 (n);
  printf (" % d \ n”, ret1);
  int ret2=科学(n);
  printf (" % d \ n”, ret2);
  int ret3=Number3 (n);
  printf (" % d \ n”, ret3);
  系统(“暂停”);
  返回0;
  } 

写一个函数返回参数二进制中1的个数(三种方法)