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

#include<stdio.h>
#include<stdlib.h>

int number_of_one(int num)//计算一个二进制数中1的个数
{
	int i = 0;
	int key = 0;
	for (i = 0; i < 32; i++)
	{
		key += num & 0x00000001;
		num >>= 1;
	}
	return key;
}
int main()
{
	int m = 0;
	int n = 0;
	int apple = 0;
	int ret;
	printf("请输入两个比较的数:\n");
	scanf("%d %d", &m, &n);
	apple = m^n;
	ret=number_of_one(apple);
	
	printf("共有%d个1\n", ret);
	system("pause");
	return 0;
}

计算一个二进制中数的个数函数

int number_of_one(int num)
{
	int i = 0;
	int n = 0;
	for (i = 0; i < 32; i++)
	{
		n += num & 0x00000001;
		num >>= 1;
	}
	return n;
}