性质:spa
(1) 一个数与1异或会翻转blog
(2) 一个数与0异或保持不变it
(3) 一个数异或它自己等于0class
(4) 每一位的结果只与该位有关。变量
应用:im
(1) 使特定位翻转di
假设有01110101,如今想让第一位,第三位翻转(最低位为第一位),只要异或00000101,获得01110000.time
(2) 交换两个值,不用临时变量new
假如a=3,b=4。想将a和b的值互换,能够用如下赋值语句实现:
a=a ^ b;
b=b ^ a;
a = a ^ b;
即等效于如下两步:
① 执行前两个赋值语句:“a=a ^ b;”和“b=b ^ a;”至关于b=b ^ (a ^ b)。而b ^ a ^ b等于a ^ b ^ b。b ^ b的结果为0,由于同一个数与自己相^,结果必为0。所以b的值等于a ^ 0,即a,其值为3。
② 再执行第三个赋值语句:a=a ^ b。因为a的值等于(a ^ b),b的值等于(b ^ a ^ b),所以,至关于a=a ^ b ^ b ^ a ^ b,即a的值等于a ^ a ^ b ^ b ^ b,等于b。a获得b原来的值。