swap(a,b)异或骚操作方法

众所周知,平日里我们如果要交换两个变量的时候,通常都是

void swap(int a, int b)
{
    int temp = a;
    a = b;
    b = temp;
}

通过创建temp变量,保存其中一个的值,再交换两个变量的值

那么,有木有什么操作是更骚的呢

void swap(int a, int b)
{
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
}

大家可能看不懂,我来解释一下。

大家小学二年级都学过 ^ 异或运算,异或运算中的几个常用的性质有:

0x01. 0异或任何数,都是该数;

0x02.任何数与自己异或结果都是0;

0x03.异或运算有交换律和结合律。

那么,

第一行,a最终值为a^b,b最终值为b。
第二行,a最终值为a^b,b最终值为a^b^b=a。
第三行,a最终值为a^b^a=a^a^b=b,b最终值为a。

是不是很骚,你get了吗

Original: https://www.cnblogs.com/chr1ce/p/16593284.html
Author: chris599
Title: swap(a,b)异或骚操作方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/711750/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球