位运算 交换2个数 异或运算
go
var swap func(a, b *int) = func(a, b *int) {
*a ^= *b
*b ^= *a
*a ^= *b
}
c
void swap(int* a,int* b){
*a^=^*b=^*a=^*b;
}
a 0 0 1 1
b 0 1 0 1
a1=a^b 0 1 1 0
b1=b^(a^b) 0 0 1 1
a2=a1^(b1^(a^b)) 0 1 0 1
a^b=b^a
b^(a^b)=b^a^b=b^b^a=a
(a^b)^[b^(a^b)^(b)]=b
满足交换律