该按位运算的输出是什么?如何?

时间:2018-08-10 13:18:42

标签: bitwise-operators

int main()
{
   int a = '-' ^ '+';
   cout << a;
   return 0;
}

此代码的输出是什么?请解释一下,我知道xor如何处理数字,但是像这样使用这段代码的输出是什么,并解释如何?

1 个答案:

答案 0 :(得分:1)

“-”和“ +”是字符(用单引号表示)。

字符是继承的整数,表示ASCII中的字符位置。

'-'= 45,'+'= 43。

所以您的代码与45 ^ 43相同。

内部将它们转换为二进制:

45 = 00101101, 43 = 00101011

然后对它们执行异或运算,结果

000110

,然后又返回int(110二进制=十进制的6)并分配给整数a。

在c中进行测试:

 int a = '-' ^ '+';
 printf("%d", a); //%d is to print it as a number

给出结果6,就像我的解释一样。