首页 > 解决方案 > 一次对多个整数应用位运算符

问题描述

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

int xor = 10 ^ 25 ^ 40 ^ 55......and so on

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

标签: c#bit-manipulationbitwise-operatorsbitwise-xor

解决方案


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

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

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

推荐阅读