首页 > 其他分享 >写一个函数返回参数二进制中1的个数(c语言)

写一个函数返回参数二进制中1的个数(c语言)

时间:2024-07-27 18:25:23浏览次数:16  
标签:count return 函数 1110 二进制 32 个数 ++ int

1.int 一共有32位,我们要知道一个数取余2等于1(n%2==1),就可以得到二进制中1的个数.然后一个数除于2(n=n/2),就可以使32位向右一位(例如:5 为101,5/2==2,2为 10,)。

方法1(不可以输入负数)

//写一个函数返回参数二进制中1的个数
//方法1
int  count(int n ,int z)
{
	//当a为正数的
	if (n > 0)
	{
		for (int i = 0; i <= 32; i++)
		{
			if ((n % 2) == 1)
			{
				z++;
			}
			n = n / 2;
		}
	}
	return z;
}
int main()
{
	int a = 0;
	int z = 0;
	scanf_s("%d", &a);
	int c=count(a ,z);
	printf("%d", c);
	return 0;
}

方法二(可以用求一,用位操作符和算术操作符(n >>i)&1) == 1)

方法2
int  count(int n, int z)
{
	for (int i = 0; i < 32; i++)
	{
		if (((n >>i)&1) == 1)
		{
			z++;
		}
	}
	return z;
}
int main()
{
	int a = 0;
	int z = 0;
	scanf_s("%d", &a);
	int c=count(a ,z);
	printf("%d", c);
	return 0;
}

方法三(可以输入负数,用无符号数 unsigned int n=0)方法三(n=n&(n-1))可以消失一个1
//如 n=15
//1111 n
//1110 n-1
//1110 n=n&(n-1)
//1110 n
//1101 n-1
//1100 n=n&(n-1)

//方法三(n=n&(n-1))可以消失一个1
//如 n=15
//1111 n
//1110 n-1
//1110 n=n&(n-1)
//1110 n
//1101 n-1
//1100 n=n&(n-1)
int count(int n, int z)
{
	while (n)
	{
		if (n > 0)
		{
			//return a & count(a - 1,z+1);
			n = n & (n - 1);
			z++;
		}
	}
	return z;
}

int main()
{
	int a = 0;
	int z = 0;
	scanf_s("%d", &a);
	int c=count(a ,z);
	printf("%d", c);
	return 0;
}

标签:count,return,函数,1110,二进制,32,个数,++,int
From: https://blog.csdn.net/scy2429828663/article/details/140591562

相关文章

  • 关于函数式弹窗组件遇到的问题
    好久没写博客了。其实也不是没写,只是没发布到的网上。这回记录一个在开发函数式组件中碰到的问题。开门还是不要见山起因是这样的,入职现在这家公司后,发现有些代码习惯挺不适合我的,就是不习惯,没事那就折腾嘛。所以就有了接下来的故事。废两句话,首先说碰到什么问题呢?公司组件......
  • 六、函数
    6.1定义函数defgreet_user():"""显示简单的问候语"""print('Hello!')greet_user()#调用函数 6.1.1向函数传递信息defgreet_user(username):"“显示简单的问候语"” print(f"Hello,{username.title()}!")greet_user('j......
  • ast获取指定python文件中携带指定装饰器函数的实现
    在实现自动化测试过程中,需要根据指定的装饰器来标记需要执行的用例或函数,下面根据使用ast库来实现读取指定文件中的数据结构后对其内容进行解析并拿到携带对应装饰器的函数。根据以下方法仅能解析func、class-func的数据结构,其余数据结构可能不兼容,需要根据实际情况进行完善调整......
  • 有参构造函数注入底层源码深入剖析**前戏
    有参构造函数注入底层源码深入剖析前戏方式一:创建两个类:publicclassTestDIBean{ publicStringsay(){ return"IamTestDIBean.say()"; }}packagecom.coding.spring.practies;publicclassTestDIBean1{ privateTestDIBeantestDIBean; publicTestDIBean......
  • useRoute 函数的详细介绍与使用示例
    title:useRoute函数的详细介绍与使用示例date:2024/7/27updated:2024/7/27author:cmdragonexcerpt:摘要:本文介绍了Nuxt.js中useRoute函数的详细用途与示例,展示了如何在组合式API中使用useRoute获取当前路由信息,包括动态参数、查询参数等,并提供了丰富的计算引用说明,如......
  • 《梦醒蝶飞:释放Excel函数与公式的力量》23.1 学生主导的项目案例
     第23章:学生项目展示 23.1学生主导的项目案例在《梦醒蝶飞:释放Excel函数与公式的力量》中,第23章将展示学生主导的项目案例。这些案例展示了学生如何运用所学的Excel函数与公式,解决实际问题,展示他们的创造力和分析能力。案例1:学校活动管理系统背景:某学校希望建立一个活动......
  • 《梦醒蝶飞:释放Excel函数与公式的力量》23.2 项目评估与反馈
     第23章:学生项目展示 23.2项目评估与反馈在学生项目展示中,项目评估与反馈是至关重要的一环。通过评估和反馈,可以识别项目中的优点和不足,帮助学生不断改进和提升。以下是项目评估与反馈的详细步骤和示例。项目评估的关键要素1.目标达成情况2.项目计划与执行3.数据准......
  • 《梦醒蝶飞:释放Excel函数与公式的力量》21.2 问题解决策略
     第21章:综合案例分析 21.2问题解决策略在综合案例分析中,解决问题的策略涉及多个步骤,从问题的识别、分析到实施解决方案和评估效果。通过系统的方法和多学科的知识,可以高效地解决复杂的问题。以下将介绍一个具体案例,并通过详细的步骤展示如何制定和实施问题解决策略。案例......
  • 函数调用结束后如何恢复调用前的现场
    函数调用结束后,恢复调用前的现场是一个涉及堆栈操作的重要过程。这个过程主要依赖于硬件栈(如x86架构中的栈)来保存和恢复函数的执行状态。以下是详细的恢复步骤:1.堆栈的作用在函数调用过程中,堆栈(Stack)被用来存储局部变量、函数参数以及函数的返回地址等信息。每个函数调用都......
  • 什么是函数重载以及它基于什么原则来区分不同的函数
    函数重载的定义函数重载(FunctionOverloading)是指在编程中允许同一个函数名定义多个具有不同参数类型或参数个数的函数,根据不同的参数类型或参数个数来确定调用哪个函数。这种机制提供了更灵活的函数调用方式,使得函数能够处理不同类型或数量的参数,而无需使用不同的函数名。函......