C#不使用中间变量使用异或交换两个数
class Program { static void Main(string[] args) { byte v1 = 1; byte v2 = 2; Swap(ref v1, ref v2); Console.WriteLine("v1: {0}, v2: {1}", v1, v2); Console.ReadLine(); } static void Swap(ref byte a, ref byte b) { //异或运算法则: //0^0=0 //0^1=1 //1^0=1 //1^1=0 //定律: //1). 交换律,即 a^b=b^a //2). 结合律,即 (a^b)^c=a^(b^c) //3). 对于任何数a,都有 a^a=0,a^0=a //4). 自反性 a ^ b ^ b = a ^ 0 = a a ^= b; //a=a^b b ^= a; //b=b^a=b^(a^b)=a a ^= b; //a=a^b=a^(b^a)=b } }