题目:异或运算是常见的二进制运算,给出两个n位二进制数a,b。a异或b的运算依次考虑二进制的每一位,若这一位
相同,那么这一位的异或结果就是0,不同就是1。例如a=1100, b=0100。执行a异或b的运算,a的最高位是1,b的最高位是0,两个数字不同所以最高位异或结果是1;a和b次高位都是1,所以次高位异或为0;最后两位它们都是0,所以异或结果也都是0。那么a异或b的答案就是1000。
现在输入两个n位二进制数,输出它们异或结果的十进制答案。上述样例中异或的二进制结果为1000,转化成十进制就
是8。
代码:
#include<bits/stdc++.h> using namespace std; char s[100]; int getnum(int n){ int ans = 0; for(int i = 0; i < n; i++){ ans *= 2; ans += s[i] - '0'; } return ans; } int main(){ int n; scanf("%d", &n); scanf("%s", s); int a = getnum(n); scanf("%s", s); int b = getnum(n); printf("%d\n", a ^ b); return 0; }