C语言异或运算在程序设计中的妙用

异或运算符^也称XOR运算符。它的规则是若参加运算的两个二进位同号,则结果为0(假);异号则为1(真)。即0 ^ 0=0,0 ^ 1=1,1 ^ 1=0。

性质:

(1) 一个数与1异或会翻转

(2) 一个数与0异或保持不变

(3) 一个数异或它本身等于0

(4) 每一位的结果只与该位有关。

应用:

(1) 使特定位翻转

    假设有01110101,现在想让第一位,第三位翻转(最低位为第一位),只要异或00000101,得到01110000.

(2) 交换两个值,不用临时变量

 假如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原来的值。

转载于:https://www.cnblogs.com/ggg-327931457/p/10124472.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值