异或运算

来源:互联网 发布:js控制embed视频播放 编辑:程序博客网 时间:2024/05/21 12:00

具体应用
1.世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?
输入例子:
1999 2299

输出例子:
7

思路:
注意负数(先转换为正数),int 有32位,故:先将两个数异或,结果&上掩码x=1;如果真,则count++;然后m,n 分别左移1位(循环32次)

#include <iostream>using namespace std;int main(){    int m, n;    int count;    while (cin >> m >> n){        int i = 32;        int x = 1;        if (m < 0)m = -m;        if (n < 0)n = -n;        count = 0;        while (i--){            if ((m^n)&x)count++;            m = m >> 1;            n = n >> 1;        }        cout << count;    }    system("pause");}
0 0
原创粉丝点击