C语言每日一题(5):求两个数二进制中不同位的个数


  • 文章主题:求两个数二进制中不同位的个数🔥
  • 所属专栏:C语言每日一题📗
  • 作者简介:每天不定时更新C语言的小白一枚,记录分享自己每天的所思所想😄🎶
  • 个人主页:的个人主页🏄🌊

目录


前言

编程起因

最近刚学位操作符以及二进制码的相关知识,于是想出了求两个数二进制中不同位的个数这道题加深一下自己对于这方面的理解。

项目介绍

设计了一个求两个数二进制中不同位的个数的项目。


设计思路

1.整体逻辑

方法一用常规做法每一位进行比较不同计数器就加一来得出两二进制位种不同位的个数,方法二则是利用按位与的特性(不同位相异则该位为其两位的差值1,相同也是为两位的差值0,原理类似于数学中的按位求绝对值在赋值到该位上😂),再用C语言每日一题第3天的知识(Count_1()函数设计),调用那个函数的三种方法之一,或者自己再在该项目中设计出那三种方法,即可对该题进行完美求解。

2. 具体逻辑

与代码展示中的逻辑相同这里不作过多解释。


代码展示

方法一 :遍历两二进制码位来比较不同(常规做法)

c 复制代码
#include <stdio.h>
int main()
{
	int n1 = 0, n2 = 0;
	printf("Please enter two numbers:\n");
	scanf("%d%d", &n1, &n2);
	int count = 0;
	for (int bits = 0; bits <= 32; bits++)
	{
		if (((n1 >> bits) & 1) != ((n2 >> bits) & 1))//遍历二进制码位数
		                                             //比较两位是否不同
		{
			count++;//如若不同则计数器加一
		}
	}
	printf("The number of different bits in two binary sequences:\n");
	printf("%d", count);
	return 0;
}

方法二 :巧用异或(难度较高)

c 复制代码
#include <stdio.h>
int main()
{
	int n1 = 0, n2 = 0, n = 0;
	printf("Please enter two numbers:\n");
	scanf("%d%d", &n1, &n2);
	n = n1 ^ n2;//按位异或,将两二进制码位按位异惑,不同位按位与后会变成
	            //1相同位则为0,再用第3天的Count_1()函数的方法计算出每
	            //位中1的个数(所以用这种方法的话实际上还可以划分出同
	            //一思路不同取1做法的3种小方法,读者可自行去结合第3天
	            //Count_1()的做法迁移运用一下,在这不作过多赘述)
	int count = 0;
	for (int bits = 0; bits <= 32; bits++)//计算1的方法:第3天Count_1()
	                                      // 函数方法一
	{
		if (((n >> bits) & 1) == 1)
		{
			count++;
		}
	}
	printf("The number of different bits in two binary sequences:\n");
	printf("%d", count);
	return 0;
}

效果展现


结语

以上就是我对求两个数二进制中不同位的个数这个项目的解题思路,代码以及效果展示,希望对你的C语言学习有所帮助!作为刚学编程的小白,可能在一些设计逻辑方面有些不足,欢迎评论区进行指正!看都看到这了,点个小小的赞或者关注一下吧(当然三连也可以~),你的支持就是博主更新最大的动力!让我们一起成长,共同进步!


相关推荐
m0_720245013 分钟前
1543.统计好三元组(简单)
开发语言·算法
XGeFei1 小时前
【AI应用/Agent智能体搭建平台2】Dify——自部署
人工智能·笔记·学习
hsjiasb1 小时前
FreeRTOS学习(二十三)——消息缓冲区(Message Buffer)
stm32·单片机·嵌入式硬件·学习·freertos
叠层归一研究院1 小时前
AGI 系统(八):符号范畴嵌入函子 — SymCat ↪ C_M107 严格化
c语言·开发语言·人工智能·算法·transformer·agi
明朝百晓生2 小时前
Deep RL learning[2026/8]
开发语言·javascript·人工智能
weixin-a153003083162 小时前
python-装饰器
开发语言·python
我的xiaodoujiao3 小时前
快速学习Python基础知识详细图文教程17--类型注解和断点调试
开发语言·python·学习·测试工具
leoZ2315 小时前
AI 辅助开发的五道坎
开发语言·人工智能·视觉检测·bert·php·超分辨率重建·openvino
IT古董5 小时前
【MES学习笔记系列】MES 厂商与产品对比
笔记·学习
wuyk5555 小时前
2.队列:先进先出的线性数据结构
c语言·数据结构·stm32·单片机