C语言十六弹 --求两个整数二进制位不同的位数

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

思路:1.要求不同的个数 就必须遍历比较两个数的二进制位,不同就使用一个三方变量接收++,相同则跳过。

2.使用一个相同的三方变量来作为两者判断条件的基础,而考虑到需要遍历二进制位 则使用1来作为三方变量。

3.比较方法:通过过使用移位符进行依次比较 如果不相同证明位数不同 则三方变量++。


for (int i = 0; i < 32; i++)
{
	if (((a >> i)&1) != ((b >> i)&1))
	{
		count++;
	}
}

总代码

#define _CRT_SECURE_NO_WARNINGS
#include 

int main()
{
	int a = 0, b = 0;
	scanf("%d %d", &a, &b);
	int count = 0;
	for (int i = 0; i < 32; i++)
	{
		if (((a >> i)&1) != ((b >> i)&1))
		{
			count++;
		}
	}
	printf("%d",count);
	return 0;
}

你可能感兴趣的:(c语言,算法,数据结构)