回 帖 发 新 帖 刷新版面

主题:异或操作的式子,看不懂。求解释

a ^= b ^= a ^= b;
书上说这个式子可以交换a和b的值。
我知道异或怎么算,如果我一步一步分开来,并给a,b都假定一个值,我是可以算出结果确实是交换了两个值,可是我不明白这样写连起来的道理,就是我不清楚为什么别人能想到这么写?

书上是这么解释的:可以将上述等效于下述两步:
b = b ^= a ^= b; a = a ^= b;//这里就看不懂了。

回复列表 (共13个回复)

11 楼

呵,我对哪些cpu有哪些指令知道的不多,只了解个大概,以后要多加强学习了!

12 楼

[quote]呵,我对哪些cpu有哪些指令知道的不多,只了解个大概,以后要多加强学习了!
[/quote]嘿嘿,其实如果不涉及那些平台,了解就行了,要不将来用处也不大:)

13 楼

[quote]或是这样理解:
a^b=b^a

a^b^b=a

故:
a^b^a=b^a^a=b

根据上面的结论,我们做如下推导:
设原a,b值为a,b
新a,b值为an,bn
a^=b: 
  an
 =a^b;

b^=a:
  bn
 =an^b
 =a^b^b
 =a;

a^=b:
  an
 =bn^an
 =a^an
 =a^a^b
 =b;
[/quote]
学习了

我来回复

您尚未登录,请登录后再回复。点此登录或注册