注册 登录
编程论坛 C++教室

下面这个异或运算怎么理解?

侠客cp 发布于 2016-12-19 18:50, 1717 次点击
{
result=0;
for(i=0;i<n;i++){
scanf("%d",&m);
result^=m;
}
6 回复
#2
侠客cp2016-12-19 18:56
^=是C/C++的一个符合运算符。表示异或赋值。
如:
a^=b相当于:a=a^b;
异或就是两个数的二进制形式,按位对比,相同取0,不同取一.
上面的不理解。。。。。
#3
侠客cp2016-12-19 18:57
哪位大神知道,求帮助。
#4
yangfrancis2016-12-19 22:09
将result和m按位做异或运算,结果赋给result. 因为result是0,这种运算实际上就是把m赋给予result.
比如m=5,二进制表示为"101",而result是0。将"101"和"000"进行位异或运算,第一位和第三位不一样,要做置位处理,第二位两个数一样,不置位,这样结果仍然是"101",即5
#5
damzkk2016-12-24 17:04
学习了。问题是要输入n个数异或,那是什么意义呢?
#6
小木木囡2016-12-27 16:43
首先,按位运算就是不影响其他数的运算,不会有进位或者退位运算。
异或运算:相同出零,相异出一;
同或运算:相同出一,相异出零。
异或运算:
比如:1 0 1 1 0 0 1 1
      1 1 1 0 1 0 0 1
  ----------------------
   =  0 1 0 1 1 0 1 0
#7
小木木囡2016-12-27 16:45
上一个帖子,三行的数与数是对齐的
1