一般的情况下我们都是用变量t等变量来存储要进行数据交换的变量,我们用C语言为例
int a = 10;
int b = 20;
int t = 0;
t = a;
a = b;
b = t;
printf("%d %d", a, b);
return 0;
这种用法用于像冒泡排序等类型的场景,这是一般的做法
接下来我们用另一种方法,用异或(xor)来进行数据交换
什么是异或呢?
异或,英文为exclusive OR,缩写成xor
异或(eor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为"⊕",计算机符号为"eor"。其运算法则为:
a⊕b = (¬a ∧ b) ∨ (a ∧¬b)
如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。
异或略称为XOR、EOR、EX-OR
程序中有三种演算子:XOR、eor、⊕。
使用方法如下
z = x ⊕ y
z = x eor y
用C语言写异或是用^。
注意:^在C语言中并不是我们数学认为的^,而是异或逻辑运算符,在C语言中数学的^是pow函数,这个函数要引用math.h头文件。
用C语言使用异或运算符例题:
int a = 10;
int b = 20;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("%d %d", a, b);
return 0;
在VB中使用异或运算符例题:
Dim a, b
a = 10
b = 20
a = a Xor b
b = a Xor b
a = a Xor b
Print a, b
答案都是a=20 b=10