C语言:写一个函数返回参数二进制中 1 的个数

本文介绍了一种计算无符号整数二进制表示中1的位数的方法。通过两个不同的实现方式,展示了如何遍历每一位并计数。第一个方法使用了位移和按位与操作符,而第二个方法则通过遍历所有可能的位来实现。文章还提到了编程习惯的重要性,强调即使在不使用else的情况下,也应该保持代码的一致性和完整性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>
#include<stdlib.h>
写一个函数返回参数二进制中 1 的个数
//比如: 15 0000 1111 4 个 1
//程序原型:
//int count_one_bits(unsigned int value)
//{
// // 返回 1的位数
//}
//int count_one_bits(unsigned int n)
//{
// int i = 0;
// while (n != 0)
// {
//  if (n  & 1 == 1)
//  {
//  
//   n = n>>1;
//   i++;
//  }
//  else
//  {
//   n=n >> 1;
//  }
// }
// return i;
//}
int count_one_bits(unsigned int n)
{
 int i = 0;
 int j = 0;
 for (j = 0; j < 32;j++)
 {
  if ((n>>j) & 1 == 1)
  {

   i++;
  }
 
 }
 return i;
}

int main()
{
 int n = 20;
 
 printf("%d", count_one_bits(n));
 system("pause");
 return 0;
}

两种方法,第一种不能丢else;所以在以后的编程中无论用不用得到,用了if最好都加上else。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值