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


相关推荐
码力码力我爱你1 分钟前
C HTML格式解析与生成之gumbo
c语言·开发语言·html
工程师老罗10 分钟前
Java笔试面试题AI答之设计模式(4)
java·开发语言·设计模式
muzi_liii15 分钟前
C++类和对象(下)
开发语言·c++
DdddJMs__13523 分钟前
C语言 | Leetcode C语言题解之第421题数组中两个数的最大异或值
c语言·leetcode·题解
zero.cyx24 分钟前
JS函数部分
开发语言·前端·javascript
一丝晨光26 分钟前
语言的条件语句
java·开发语言·c++·程序员·c·条件语句·algol
Kixuan21428 分钟前
ES学习笔记
java·笔记·学习·elasticsearch·搜索引擎
18你磊哥29 分钟前
java重点学习-设计模式
java·学习·设计模式
细节的温柔34 分钟前
Python的主要特点及其应用领域
开发语言·python
Pdh胖大海37 分钟前
天源迪科java实习生面经
java·开发语言