1、编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同? 

#include<stdio.h>
#include<string.h>
int bits_compare(int num1,int num2)
{
	int a[32]={0};
	int b[32]={0};
	int i=0;
	int count=0;

	for(i=0;i<32;i++)//num1 二进制转化
	{
		a[i]=num1%2;
		num1=num1/2;
	}
	printf("1 二进制: ");
	for(i = 31;i >= 0;i --)//调整格式并输出结果
	{
		printf("%d",a[i]);
		if(i%4 == 0)
		{
			printf(" ");
		}
	}
	printf("\n");

	for(i=0;i<32;i++)//num2 二进制转化
	{
		b[i]=num2%2;
		num2=num2/2;
	}
	printf("2 二进制: ");
	for(i = 31;i >= 0;i --)
	{
		printf("%d",b[i]);
		if(i%4 == 0)
		{
			printf(" ");
		}
	}
	printf("\n");

	for(i=0;i<32;i++)//比较
	{
		if(a[i]!=b[i])
		{
			count++;
		}
	}
	printf("count=%d\n",count);
}
int main()
{
	int m=0,n=0;
	int count=0;
	int arr1[32]={0},arr2[32]={0};
	printf("请输入两数m、n: ");
	scanf("%d%d",&m,&n);
	bits_compare(m,n);
	return 0;
}