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)
但是当元素数量未知时,我无法在运行时为列表的每个元素动态实现它。我想一次对所有时间应用按位异或,而不是一次两个。
您可以使用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)
| 归档时间: |
|
| 查看次数: |
280 次 |
| 最近记录: |