按位与&运算大于等于按位异或^运算时?

When bitwise and & operation is greater or equal to bitwise xor ^ operation?

当按位&运算大于等于按位^运算时?

例如,4&7 >= 4^7 为真。

我们怎么知道什么时候会是真的?

一种方法是手动隐藏什么技巧?

您可以像这样快速创建 String 图像:

for i in 1...25 {
    var foo = ""
    for j in 1...25 {
        foo += i&j >= i^j ? "•" : " "
    }
    print(foo)
}
•                        
 ••                      
 ••                      
   ••••                  
   ••••                  
   ••••                  
   ••••                  
       ••••••••          
       ••••••••          
       ••••••••          
       ••••••••          
       ••••••••          
       ••••••••          
       ••••••••          
       ••••••••          
               ••••••••••
               ••••••••••
               ••••••••••
               ••••••••••
               ••••••••••
               ••••••••••
               ••••••••••
               ••••••••••
               ••••••••••
               ••••••••••

注意正方形是如何呈二次方增长的。

从这里你可以看到当 i == j == true 它总是 returns 真。

如果我们只谈论设置位。当最高 common 设置位也是每个数字中的最高设置位时,此条件为真。

为什么?因为当两个数中设置的最高位也是公共位时,那么该位将被设置在 AND 运算的结果中。并且不会在异或运算的结果中设置。

并且如果最大数中的最高设置位没有在较低数中也设置,则必然该位将在XOR操作中设置而不在AND操作中设置。