异或运算+统计1的个数

bit位数

http://www.nowcoder.com/questionTerminal/daf9032926614dab91ca624a7759a868

采用位运算。将num1和num2按位异或得到num,再统计num中二进制1的个数,即是不同的位数。代码比较简单,如下:

#include <iostream>
using namespace std;

int countDiffBin(int num1, int num2) {
    int num = num1^num2;
    int cnt = 0;
    while(num) {
        ++cnt;
        num = num&(num-1);
    }

    return cnt;
}

int main()
{
    int n1, n2;
    while(cin >> n1 >> n2) {
        cout << countDiffBin(n1, n2) << endl;
    }

    return 0;
}
全部评论

相关推荐

牛油果甜奶昔:答案就在你标题的前三个字
点赞 评论 收藏
分享
10-09 17:17
已编辑
门头沟学院 Java
活泼的代码渣渣在泡池...:同学你好,我也是学院本,后天要面这个亚信科技,是实习,请问问题都啥样呀,我项目就做了网上的,这是第一次面试
投递多益网络等公司10个岗位
点赞 评论 收藏
分享
瑞雪兆丰年_:可以贴个超级大的校徽,以防HR眼拙
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务