您的位置:首页 > 其它

求出两个int(32位)整数m和n的二进制表达中,有多少bit位不同

2016-05-29 16:53 274 查看
#include<stdio.h>
#define MAX(X,Y) ((X)<(Y)?(X):(Y))
int main()
{
int a = 1999;
int b = 2299;
int num = 1;
int nam;
if (b % 2 == 1)
{
nam = 1;
}
else
{
nam = 0;
}
do
{

int A = a % 2;
int B = b % 2;
if (A != B)
{
num++;
}
else
{
num = num;
}

a = a / 2;
b = b / 2;

}while (b!=nam);
printf("%d", num);

}
方法二;
#include<stdio.h>
#define MAX(X,Y) ((X)>(Y)?(X):(Y))
int num_sing(int max)
{
if (max % 2 == 0)
{
return 0;
}
else
{
return 1;
}
}
int main()
{
int a = 1999;//1010 
int b = 2299;//1111
int i = 0;
int num = 0;
int max = MAX(a, b);
int sing = num_sing(MAX(a, b));
int cishu =0+sing;
  
while (max!= sing)
{
max = max / 2;
cishu++;
}
for (i = 0; i < cishu; i++)
{
if ((a&1)!=(b&1))
{
num++;
}
a = a >> 1;
b = b >> 1;
}
printf("%d", num);
}
本文出自 “痕迹” 博客,请务必保留此出处http://wpfbcr.blog.51cto.com/10696766/1703379
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: