C#反Xor函数

时间:2015-12-12 14:04:45

标签: c# logic xor

我刚刚从C#技术面试/考试中退了回来,但却被其中一个难题所困扰。有人可以帮助解决这个问题,因为我无法解决这个问题,这真的让我很烦恼。问题是:

为以下方法编写反Xor函数:

public int[] XorFunction(int[] array)
{
    for (int i = array.Length - 1; i > 0; i--)
    {
        int first = array[i];
        int second = array[i - 1];
        array[i] ^= second;
    }
    return array;
}

我是一个数据库人员,所以不完全确定Xoring功能。我来的最简单的是天真地迭代[1..array.length],并设置数组[i] ^ =数组[i + 1],但我很确定这不是正确的,因为我是更改array [i]的值,然后使用下一个数字将其用于xor。

它困扰我,因为这似乎是一个非常直接的问题......

2 个答案:

答案 0 :(得分:0)

不完全确定你要做什么,循环没有意义......?

但是,您可以使用~运算符翻转位或“反转”结果。

所以,var a = ~(a ^ b);

答案 1 :(得分:0)

代码:

public int[] UnXorFunction(int[] array)
{
    for (int i = 1; i < array.Length; ++i)
    {
        int v = array[i - 1];
        array[i] ^= v;
    }
    return array;
}