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;
}
转载于:https://blog.51cto.com/zxtong/1703538