我正在寻找一种使用 Oracle 数据库执行 BITOR() 的方法,并遇到了一个仅使用 BITAND() 的建议,将 BITOR(a,b) 替换为 a + b - BITAND(a,b)。
我手动测试了几次,并验证它似乎适用于我能想到的所有二进制数,但我无法快速找出数学证明来证明为什么这是正确的。
有人可以启发我吗?
A & B 是 A 和 B 中都打开的位的集合。A - (A & B) 留给您仅在 A 中打开的所有位。将 B 添加到其中,您将获得所有在 A 中打开的位。 A 中的或 B 中的那些。
A 和 B 的简单加法不起作用,因为两者都有 1 位。通过首先删除 A 和 B 共有的位,我们知道 (A-(A&B)) 将没有与 B 共有的位,因此将它们加在一起可以保证不会产生进位。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)