列表

详情


MT42. bit位数

描述

两个整数 m 和 n 的二进制表达中有多少个位(bit)不同?

数据范围:

输入描述

一行中给定两个数字

输出描述

输出这两个数字中bit不同的个数

示例1

输入:

15 8

输出:

3

说明:

15的二进制表示中后四位是 1111 , 3的二进制表示中后四位是 0011,因此有两位不同

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 368KB, 提交时间: 2020-07-30

#include<stdio.h>
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    n=n^m;
    m=0;
    while(n>0)
    {
        if(n&1)
        {
            m=m+1;
        }
        n=n>>1;
    }
    printf("%d\n",m);
}

C 解法, 执行用时: 1ms, 内存消耗: 376KB, 提交时间: 2020-08-09

#include<stdio.h>
int main(){
    int a,b,cnt=0;
    scanf("%d %d",&a,&b);
    while(a!=0&&b!=0){
        if((a&1)!=(b&1))
            cnt++;
        a=a>>1;
        b=b>>1;       
    }
    while(a!=0&&b==0){
        if(a&0==0)
            cnt++;
        a=a>>1;
    }
    while(b!=0&&a==0){
        if(b&0==0)
            cnt++;
        b=b>>1;
    }
    printf("%d",cnt);   
}

上一题