输入例子:
1999 2299
输出例子:7
方法一
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int CountBit(int m ,int n)
{
int tmp = m^n;
int count = 0;
while (tmp != 0)
{
tmp = tmp & (tmp - 1);
count++;
}
return count;
}
int main()
{
int m = 0;
int n = 0;
printf("请输入两个数:");
scanf("%d %d", &m,&n);
printf("m和n的二进制表达中,有%d个不同位", CountBit(m, n));
printf("\n");
system("pause");
return 0;
}
方法二
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int CountBit(int m, int n)
{
int count = 0;
for (int i = 0; i < 32;++i)
{
if (((1 << i) & m )!= ((1 << i) & n))
{
count++;
}
}
return count;
}
int main()
{
int m = 0;
int n = 0;
printf("请输入两个数:");
scanf("%d %d", &m, &n);
printf("m和n的二进制表达中,有%d个不同位", CountBit(m, n));
printf("\n");
system("pause");
return 0;
}