首页 > 试题广场 >

懂二进制

[编程题]懂二进制
  • 热度指数:3867 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?
示例1

输入

3,5

输出

2

说明

3的二进制为11,5的二进制为101,总共有2位不同 
示例2

输入

1999,2299

输出

7
//负数在内存中存储的就是补码
//先是计算两个数的异或结果 相同为0 不同为1。最后根据这结果判断有几个1.
int countBitDiff(int m, int n ) {
// write code here
int i=0;
//int ans=0;
int ans=m^n;
int count=0;
while(i<32){
count+=(ans&1);
i++;
ans=ans>>1;

}
return count;
}
发表于 2022-12-23 17:08:25 回复(0)
int countBitDiff(int m, int n ) {
    // write code here
    int count=0;
    int s=m^n;
    int mask;
    for(int i=0;i<32;i++)
    {
        mask=1<<i;
        if(s&mask) count++;
    }
    return count;
}
发表于 2022-08-08 09:53:36 回复(0)

问题信息

上传者:牛客301499号
难度:
2条回答 1564浏览

热门推荐

通过挑战的用户

查看代码