求两个整数二进制中不同位的个数
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;
}
以上是关于求两个整数二进制中不同位的个数的主要内容,如果未能解决你的问题,请参考以下文章