求两个整数二进制中不同位的个数

Posted 跳动的bit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求两个整数二进制中不同位的个数相关的知识,希望对你有一定的参考价值。

/***********************************************************************
目的:输入两个整数并统计两个整数二进制中不同位的个数
分析:
▶ 最直接的方法就是两个对应的位相比较,前提是要得到它们的每1位
▶ 使用异或 '^'后,再统计
平台:Visual studio 2017 && windows
*************************************************************************/
📝 实例代码1:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int i = 0;
	int count = 0;
	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);
	for(i = 0; i < 32; i++)
	{
		if(((m >> i) & 1) != ((n >> i) & 1))
		{
			count++;
		}
	}
	printf("%d\\n", count);
	return 0;
}

📝 实例代码2:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int i = 0;
	int count = 0;
	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);
	//相同为0,相异为1
	int ret = m ^ n;
	//这时去统计ret里有几个1,就说明m和n中有几个位不同
	while(ret)
	{
		ret = ret & (ret - 1);
		count++;
	}
	printf("%d\\n", count);
	return 0;
}

在这里插入图片描述

以上是关于求两个整数二进制中不同位的个数的主要内容,如果未能解决你的问题,请参考以下文章

C语言中啥是一个8位的整数

[C语言]习题练习3

[编程题] ** 两个整数二进制位不同个数 **(拓展++)

求一个整数存储在内存中的二进制中1的个数

二进制编程题

C语言求两个数中不同的位的个数