第一种方法
#include <stdio.h>
int main()
{
int m, n;
scanf("%d %d", &m, &n);
int i = 0;
int count = 0;
for (i=0;i<32;i++)
{
if (((m>>i)&1) != ((n>>i)&1))
{
count++;
}
}
printf("%d", count);
return 0;
}
第二种方法
#include <stdio.h>
int main()
{
int m, n;
scanf("%d %d", &m, &n);
int ret = m ^ n;//相同为0,相异为1
//统计一下ret的二进制中有几个1,就说明m和n二进制中有几个位不同
int count = 0;
while (ret)
{
ret = ret & (ret - 1);
count++;
}
printf("%d", count);
return 0;
}
1万+

被折叠的 条评论
为什么被折叠?



