按位与&运算大于等于按位异或^运算时?
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操作中设置。
当按位&运算大于等于按位^运算时?
例如,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操作中设置。