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

时间:2020-09-24 15:25:45

标签: bit-manipulation bitwise-operators bitwise-xor

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

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

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

一种方法是手动执行将被隐藏的技巧?

2 个答案:

答案 0 :(得分:1)

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

为什么?因为当两个数字中最高的设置位也是公共位时,该位将在与运算的结果中被设置。而且不会在XOR操作的结果中设置它。

如果最大位数中最高的置位位也未同时设置在较低数位中,则该位必然会在XOR操作中设置,而不会在AND操作中设置。

答案 1 :(得分:0)

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

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

请注意正方形是如何平方增长的。

由此可见,i == j == true总是返回true。