您的位置:首页 > 编程语言 > C语言/C++

用c语言实现,两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?

2015-10-16 20:44 465 查看
方法一:
#include <stdio.h>
int bit_dif(int a, int b)
{
int i=0;
int ret=0;
int num=0;
ret=a^b;
for(i=0; i<32; i++)
{
if(ret&1==1)
{
num++;
}
ret=ret>>1;
}
return num;
}
int main()
{
int count=0;
int num1=0;
int num2=0;
printf("请输入两个数,用空格隔开\n");
scanf("%d%d",&num1, &num2);
count=bit_dif(num1, num2);
printf("%d\n",count);
return 0;
}

方法二:(优化)
#include <stdio.h>
int bit_dif(int a, int b)
{
int i=0;
int ret=0;
int num=0;
ret=a^b;
while(ret)
{
num++;
ret=ret&(ret-1);
}

return num;
}
int main()
{
int count=0;
int num1=0;
int num2=0;
printf("请输入两个数,用空格隔开\n");
scanf("%d%d",&num1, &num2);
count=bit_dif(num1, num2);
printf("%d\n",count);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息