欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[C语言]求两数二进制序列不同的位

程序员文章站 2022-10-30 19:14:59
1.模除实现: #include int main() { int m, n, i, x, y ,count=0; print...
1.模除实现:
 
#include<stdio.h>
 
int main()
{
    int m, n, i, x, y ,count=0;
    printf("请输入m,n:");
    scanf_s("%d%d", &m, &n);
    for (i = 31; i >= 0; i--)
    {
        x = m % 2;
        m = m / 2;
        y = n % 2;
        n = n / 2;
        if (x != y)   //通过循环比较每一位是否相等
        {
            count++;
        }
    }
    printf("不同的bit位有%d个\n",count);
    system("pause");
    return 0;
}
 
 
2.移位运算实现:
 
#include<stdio.h>
 
int main()
{
    int m, n;
    int i=32,count=0;
    printf("请输入m,n:");
    scanf_s("%d%d", &m, &n);
    int j = 0;
    while (i)
    {
        int a, b;
        a = ((m >>j)& 1); //右移一位和1相与,再比较
        b = ((n >>j)& 1);
        if (a != b)   
        {
            count++;
        }
        j++;
        i--;
    }
    printf("不同的bit位有%d个\n", count);
    system("pause");
}