异或运算的逆

Ben*_*ual 0 c# bit-manipulation xor

我做以下事情:

public static byte Merge(this byte b1, byte b2) {
    return (byte)(b1 ^ b2);
}
Run Code Online (Sandbox Code Playgroud)

所以我可以打电话:

byteVar = byteVar1.Merge(byteVar2);
Run Code Online (Sandbox Code Playgroud)

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

byteVar3 = byteVar.Unmerge(byteVar2);
Run Code Online (Sandbox Code Playgroud)

byteVar3现在应该与byteVar1相同.

我试过了:

public static byte Unmerge(this byte b1, byte b2) {
    return (byte)(b1 & ~b2);
}
Run Code Online (Sandbox Code Playgroud)

但它不正确.

Jon*_*eet 11

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

byteVar3 = byteVar.Merge(byteVar2);
Run Code Online (Sandbox Code Playgroud)

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