【C语言】输入一个整数、输出该数二进制表示中1的个数(三种方法)

  

输入一个整数、输出该数二进制表示中1的个数。如输入32岁的输出1。


代码实现:


与运算

<人力资源/> # define  _CRT_SECURE_NO_WARNINGS  1   # include   using  namespace 性传播疾病;      int  FindOneNumber (unsigned  int  num)   {   ,,,int  numberofOne =, 0;   ,,,while  (num)   ,,,{   ,,,,,,,num =, num ,, (num 作用;1);   ,,,,,,,numberofOne + +;   ,,,}   ,,,return  numberofOne;   }         void 测试()   {   ,,,int  num =, 32;   ,,,cout<& lt; FindOneNumber (num) & lt; & lt; endl;   }         int  main ()   {   ,,,()测试;   ,,,系统(“暂停”);   ,,,return  0;   }


模除法

# define  _CRT_SECURE_NO_WARNINGS  1   # include   using  namespace 性传播疾病;      int  FindOneNumber (unsigned  int  num)   {   ,,,int  numberofOne =, 0;   ,,,while  (num)   ,,,{   ,,,,,,,如果(num  %, 2,==, 1),,,,,,,,   ,,,,,,,numberofOne + +;   ,,,,,,,num /=, 2;   ,,,}   ,,,return  numberofOne;   }         void 测试()   {   ,,,int  num =, 32;   ,,,cout  & lt; & lt;, FindOneNumber (num), & lt; & lt;, endl;   }         int  main ()   {   ,,,()测试;   ,,,系统(“暂停”);   ,,,return  0;   }


移位

# define  _CRT_SECURE_NO_WARNINGS  1   # include   using  namespace 性传播疾病;      int  FindOneNumber (unsigned  int  num)   {   ,,,int  numberofOne =, 0;   ,,,while  (num)   ,,,{   ,,,,,,,if  (num ,, 1)   ,,,,,,,,,,,numberofOne + +;   ,,,,,,,num =, num 在祝辞,1;   ,,,}   ,,,return  numberofOne;   }         void 测试()   {   ,,,int  num =, 32;   ,,,cout  & lt; & lt;, FindOneNumber (num), & lt; & lt;, endl;   }         int  main ()   {   ,,,()测试;   ,,,系统(“暂停”);   ,,,return  0;   }


【C语言】输入一个整数、输出该数二进制表示中1的个数(三种方法)