首页 > 解决方案 > 两个二进制数(位集)之间的不对称差异

问题描述

通过 AND 或 XOR 可以快速轻松地确定两个二进制数之间的共享/不同位。假设我们有 A:10011 和 B:11001 我们可以得到差异。

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

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

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

是否可以通过一些快速的算术/逻辑来完成,或者我是否必须启动一些循环来逐一进行比较?

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

标签: mathbinarybit-manipulationbitwise-operatorsbitset

解决方案


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


推荐阅读