c# - 一次对多个整数应用位运算符
问题描述
我有一个整数列表,可以有任意数量的项目。现在,我想计算所有这些数字的 BITWISE XOR。如果数字已知,则可以按如下方式完成:
int xor = 10 ^ 25 ^ 40 ^ 55......and so on
但是当元素数量未知时,我无法在运行时动态地为列表的每个元素实现它。我想一次对所有时间应用按位异或,而不是一次两次。
解决方案
您可以使用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
推荐阅读
- javascript - 使用jquery Click功能的多个/嵌套选项卡不起作用
- ios - 如何解决 AssetsPickerController iOS 中 PHImageManager 的空资产问题?
- node.js - 将自定义错误从 Node/Express 发送到 Angular
- c++ - 如何创建一个新类来继承 ostream 并将其用作 cout 但带锁
- c# - 如何调用接受 Action 的方法
连同 ISomeInterface 的方法 - c# - FingerPrint Reader - 从 C# 代码创建事件处理程序到 C++ 的问题
- python-3.x - 如何从提取的文本中仅打印特定数据?
- javascript - 是否可以使用 javascript 将文件保存到特定目录?
- javascript - 显示 NaN 输出的 Js 表达式
- php - 根据用户的时区顺序显示具有不同时区的日期时间