异或运算的逆

时间:2014-06-03 18:24:51

标签: c# bit-manipulation xor

我执行以下操作:

public static byte Merge(this byte b1, byte b2) {
    return (byte)(b1 ^ b2);
}

所以我可以致电:

byteVar = byteVar1.Merge(byteVar2);

现在,我正在寻找这种反转。我应该实现一个Unmerge-Method来调用:

byteVar3 = byteVar.Unmerge(byteVar2);

byteVar3现在应该与byteVar1相同。

我试过了:

public static byte Unmerge(this byte b1, byte b2) {
    return (byte)(b1 & ~b2);
}

但它没有正常工作。

1 个答案:

答案 0 :(得分:11)

XOR是自反的 - 所以你可以使用:

byteVar3 = byteVar.Merge(byteVar2);

(我不确定“merge”在这里是一个特别好的名字,请注意......你刚刚进行了XOR操作。甚至不清楚为什么你需要一个单独的方法。)