我一直在寻找一种使用Oracle数据库执行BITOR()的方法,并且遇到了一个建议,那就是只使用BITAND()来代替,而用+ b-BITAND(a,b)代替BITOR(a,b)。

我手动测试了几次,并验证了它似乎对我能想到的所有二进制数都有效,但是我想不出快速数学证明来证明这是正确的。
有人可以启发我吗?

最佳答案

A和B是在A和B上都打开的一组位。A-(A&B)使您拥有仅在A上打开的所有那些位。将B添加到该位,您将获得所有在A中或B中。

A和B的简单加法将不起作用,因为它们都携带1位。通过首先删除A和B的公共(public)位,我们知道(A-(A&B))将没有与B的公共(public)位,因此保证将它们加在一起不会产生进位。

关于oracle - 为什么(a | b)等于a-(a&b)+ b?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1604258/

10-11 04:23