math - 两个二进制数(位集)之间的不对称差异
问题描述
通过 AND 或 XOR 可以快速轻松地确定两个二进制数之间的共享/不同位。假设我们有 A:10011 和 B:11001 我们可以得到差异。
10011 XOR 11001 = 01010(1不同0相似。)
是否有任何快速简单的逻辑或算术运算可以产生相似但不对称的输出(1s 显示这些例如存在于 A 但在 B 中缺失,反之亦然)
示例 10011 ??? 11001 = 00010(1s 表示存在于左侧操作数中,右侧缺失)
是否可以通过一些快速的算术/逻辑来完成,或者我是否必须启动一些循环来逐一进行比较?
当我考虑将一些存在/不存在数据以字节为单位存储为位标志(以提高内存效率)时,我遇到了这个问题——并且已经很高兴我这样做了,因此我可以快速轻松地进行数据差异操作,但对于许多应用程序而言,差异的方向也很重要。
解决方案
表达这一点的更规范的方式是 A AND (NOT B),其中 NOT 翻转所有位。
推荐阅读
- javascript - Angular 5:如何使用 ES6/ES5(没有 Typescript)注入路由器服务
- sonarqube - 某些 Sonarqube 6.7 仪表板中缺少 ncloc 指标
- css - 混合内容 - 不安全的样式表
- css - flexbox 和指定宽度
- python - 使用 pykafka 读取特定记录
- javascript - 访问 JSON 文件中的子树
- string - 在空格上拆分字符串但忽略双引号之间的部分
- rest - 调用函数角度后无法将状态值从 0 切换到 1
- cmd - 从命令行安装 RabbitMQ 服务器
- database - Grafana 监控活动数据库会话 - 动态