当前位置 博文首页 > L_add的博客:两个数二进制中不同位的个数

    L_add的博客:两个数二进制中不同位的个数

    作者:[db:作者] 时间:2021-08-15 22:21

    两个数二进制中不同位的个数

    题目内容:
    编程实现:两个int(32位)整数m和整数n的二进制表达中,有多少个位(bit)不同?
    例:
    输入:1999 2299
    输出: 7

    int count_dif(int m, int n)
    {
    	int i;
    	int count = 0;
    	for (i = 0; i < 32; i++)
    	{
    		if (((m >> i) & 1) != ((n>>i)&1))
    			count++;
    	}
    	return count;
    }
    int main()
    {
    	int m, n;
    	scanf("%d%d", &m, &n);
    	int ret = count_dif(m, n);
    	printf("%d\n", ret);
    	return 0;
    }
    

    优化:

    int count_dif(int m, int n)
    {
    	int count = 0;
    	int tmp = m^n;
    	while (tmp)
    	{
    		tmp = tmp&(tmp - 1);
    		count++;
    	}
    	return count;
    }
    int main()
    {
    	int m, n;
    	scanf("%d%d", &m, &n);
    	int ret = count_dif(m, n);
    	printf("%d\n", ret);
    	return 0;
    }
    
    cs
    下一篇:没有了