首页 > 试题广场 >

两个整数二进制位不同个数

[编程题]两个整数二进制位不同个数
  • 热度指数:6578 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
输入两个整数,求两个整数二进制格式有多少个位不同

输入描述:
两个整数


输出描述:
二进制不同位的个数
示例1

输入

22 33

输出

5
#include <stdio.h>

int main() {
    int a, b;
    while (scanf("%d %d", &a, &b) != EOF)
    {
        int c=a^b;
        int count=0;
        while(c!=0)
        {
            if(c%2==1)
                count++;
            c/=2;
        }
        printf("%d",count);
    }
    return 0;
}
编辑于 2024-04-09 20:53:30 回复(0)
#include<stdio.h>
int main(){
int a, b;
int count = 0;
while (scanf("%d %d", &a, &b) != EOF) {
	for (int i = 0; i < 32; i++) {
		if (((a >> i) & 1) != ((b >> i) & 1)) {
			count++;
		}
	}
	printf("%d\n", count);
}
return 0;
}

发表于 2024-03-30 18:57:13 回复(0)
#include <stdio.h>

int count_one_of_bit(unsigned int n)
{
    int count = 0;
    for(int i = 0; i < 32; i++)
    {
        if(((n >> i) & 1) == 1)
        {
            count++;
        }
    }
    return count;
}
int main() {
    int a, b;
    int c = 0;
   
    scanf("%d %d", &a, &b);
    c = a ^ b;
    int ret = count_one_of_bit(c);
    printf("%d", ret);
    return 0;
}
发表于 2024-02-22 18:40:07 回复(0)
发表于 2023-11-20 22:14:00 回复(0)
#define   _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {

    int m = 0, n = 0;
    int count = 0;
    scanf("%d%d", &m, &n);
    for (int i = 0; i < 32; i++)
    {
        if (((m & 1) ^ (n & 1)) == 1)
        {
            count++;
           
        }
        m = m >> 1;
        n = n >> 1;

    }

    printf("%d", count);
    return 0;
}
发表于 2023-11-10 19:20:51 回复(0)
#include <stdio.h>

int main()
{
    int i = 0;
    int a, b;
    int count = 0;
    scanf("%d %d",&a,&b);
    for(i = 0;i<32;i++)
    {
        int x = (a>>i)&1;
        int y = (b>>i)&1;
        if(x!=y)
        {
            count++;
        }
    }
    printf("%d",count);
    return 0;
}
发表于 2023-11-08 22:47:14 回复(0)
#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b) ;
    int i=0;
    int count=0;
    for(i=0;i<32;i++)
    {
        if (((a >> i ) & 1 ) != (( b >> i ) & 1))
        count++;
    }
    printf("%d\n",count);
    return 0;
}
发表于 2023-11-07 22:30:07 回复(0)
#include <stdio.h>

int compare(int a,int b)
{
    int count = 0;
    for (int i = 0; i < 32; i++)
    {
        int x = a & (1 << i);
        int y = b & (1 << i);
        if (x != y)
            count++;
    }
    return count;
}

int main() {
    int a, b;
    while (scanf("%d %d", &a, &b) != EOF) 
    { 
        int count = compare(a, b);
        printf("%d\n", count);
    }
    return 0;
}

发表于 2023-10-29 17:08:44 回复(0)
#include <stdio.h>

int main() {
    int a, b;
    int count = 0;
    
    scanf("%d %d", &a, &b);

    int c = a ^ b;

    for (int i = 0; i < 32; i++) {
        if(((c >> i) & 1) == 1)
        {
            count++;
        }
    }

    printf("%d", count);

    return 0;
}

发表于 2023-08-27 12:33:54 回复(0)