我发现这个代码使用or运算符来反转字符串,
public static string ReverseXor(string s)
{
if (s == null) return null;
char[] charArray = s.ToCharArray();
int len = s.Length - 1;
for (int i = 0; i < len; i++, len--)
{
charArray[i] ^= charArray[len];
charArray[len] ^= charArray[i];
charArray[i] ^= charArray[len]; }
//some more code
}
Run Code Online (Sandbox Code Playgroud)
问题是我对for循环中发生的事情不了解,有人可以向我解释一下吗?
谢谢.
以下是如何在没有临时中间变量的情况下交换两个值A,B:
A = A Xor B
B = A Xor B
A = A Xor B
Run Code Online (Sandbox Code Playgroud)
参考:XOR交换算法
这是一个8位的例子:
A = 10010010
B = 01111001
A = A Xor B = 11101011
B = A Xor B = 10010010
A = A Xor B = 01111001
Run Code Online (Sandbox Code Playgroud)