求两个整型二进制中有多少个不同位

来源:互联网 发布:策略经营单机手游 知乎 编辑:程序博客网 时间:2024/05/16 22:28

使用到的知识:

  1. 异或操作:相同比特位为0,不同比特位为1。
  2. 利用按位于运算,求一个数字二进制表示中1的个数。

思路:
利用异或操作巧妙的将问题转换为求一个数二进制表示中1的个数。


#include <iostream>using namespace std;/* 求两个整型二进制中有多少个不同位 */int main(){    int a;    int b;    cin >> a;    cin >> b;    /* 异或 相同位为0 不同位为1*/    int count = 0;    a = a^b;    while (a)    {        a = a & (a - 1);        count++;    }    cout << count << endl;    return 0;}
阅读全文
0 0
原创粉丝点击