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语言学习有所帮助!作为刚学编程的小白,可能在一些设计逻辑方面有些不足,欢迎评论区进行指正!看都看到这了,点个小小的赞或者关注一下吧(当然三连也可以~),你的支持就是博主更新最大的动力!让我们一起成长,共同进步!


相关推荐
加瓦点灯5 分钟前
观察者模式:解耦对象间的依赖关系
开发语言·javascript·观察者模式
愚润求学7 分钟前
Linux开发工具——apt
linux·服务器·开发语言
程序员小赵同学8 分钟前
AI Agent设计模式二:Parallelization
开发语言·python·设计模式
时光话14 分钟前
Lua:第1-4部分 语言基础
开发语言·lua
欧宸雅20 分钟前
Clojure语言的持续集成
开发语言·后端·golang
胡斌附体35 分钟前
qt tcpsocket编程遇到的并发问题
开发语言·网络·qt·并发编程·tcpsocket
WDeLiang37 分钟前
Flask学习笔记 - 模板渲染
笔记·学习·flask
明月清了个风1 小时前
数据结构与算法学习笔记----贪心区间问题
笔记·学习·算法·贪心算法
学c真好玩1 小时前
4.3python操作ppt
开发语言·python·powerpoint
数小模.1 小时前
MATLAB中plot函数的详细参数表
开发语言·matlab