一次对多个整数应用按位运算符

Bri*_*uja 1 c# bit-manipulation bitwise-operators bitwise-xor

我有一个整数列表,可以有任意数量的项目。现在,我想计算所有这些数字的 BITWISE XOR。如果数字已经知道,可以按如下方式完成:

int xor = 10 ^ 25 ^ 40 ^ 55......and so on
Run Code Online (Sandbox Code Playgroud)

但是当元素数量未知时,我无法在运行时为列表的每个元素动态实现它。我想一次对所有时间应用按位异或,而不是一次两个。

Ruf*_*s L 5

您可以使用Aggregate扩展方法 (from System.Linq) 对数组中的每个项目应用累加器函数。它的工作原理是取一个起始值(我们可以0在这种情况下使用,因为0 ^ n == n),并对列表中的每个项目应用累加器函数。

在我们的例子中,累加器只是将数字与下一个值的异或再次加到数字上:

int[] numbers = {10, 25, 40, 55};
int result = numbers.Aggregate(0, (accumulation, next) => accumulation ^ next);
// result = 12
Run Code Online (Sandbox Code Playgroud)