今さらxorの意味を知った。

Cとかで使うxorってビット毎の排他的論理和のことで例えば

101(5)^111(7)=010(2)なんだね・・・。

今まで俺が知ってたのって数理論理学的な排他的論理和だったのねー。

XORSwapとか疑問持ちつつも何も分からずに使ってた、心底恥ずかしい。

自分用メモ(XORSwap)

例 x = 1111(15) y = 0011(3)だったとして、

x=x^y;

//x = 1111 xor 0011 = 1100

y=x^y;

//この時点でx=1100,y=0011なので、y= 1100 xor 0011 = 1111;

x=x^y;

//この時点でx=1100,y=1111なので、 x= 1100 xor 1111 = 0011(3);

結果

最初 x = 1111(15),y = 0011(3)

最後 x = 0011(3),y = 1111(15)

納得した。