两个二进制数(位集)之间的不对称差异

asymmetric difference betwen two binary numbers (bitsets)

通过与或异或来确定两个二进制数之间的shared/different位既快速又容易。假设我们有 A: 10011 和 B:11001 我们可以得到差异。

10011 XOR 11001 = 01010(1不同0相似)

是否有任何快速简单的逻辑或算术运算可以产生相似但不对称的输出(例如 1 显示这些在 A 中存在但在 B 中缺失或反之亦然)

示例 10011 ??? 11001 = 00010(1s 表示存在于左侧操作数中而右侧缺失)

可以快速完成 arithmetic/logic 还是我必须开始一些循环来逐一进行比较?

当我考虑将一些 presence/absence 数据以字节为单位存储为位标志(为了提高内存效率)时,我遇到了这个问题——我已经很高兴我这样做了,然后我就可以了进行快速简单的数据差异操作,但对于许多应用程序,差异方向也很重要。

tkausl - 对问题的评论成功回答了它。 (A XOR B) AND A 真的可以解决问题。 XOR 将生成 A 和 B 之间的差异,然后与 A 进行 AND 掩码以仅显示 A 中存在的那些。结果差异显示这些在 A 中设置但不在 B 中设置的位。

更规范的表达方式是 A AND (NOT B),其中 NOT 翻转所有位。