问题描述
当按位&运算大于或等于按位^操作时?
例如,4&7> = 4 ^ 7为真。
我们怎么知道什么时候是真的?
一种方法是手动执行将被隐藏的技巧?
解决方法
如果我们只谈论设置位。当最高 common 设置位也是每个数字中的最高设置位时,此条件将成立。
为什么?因为当两个数字中最高的设置位也是公共位时,该位将在与运算的结果中被设置。而且不会在XOR操作的结果中设置它。
如果最大位数中最高的置位位也未同时设置在较低数位中,则该位必然会在XOR操作中设置,而不会在AND操作中设置。
,您可以像这样创建快速的String
图像:
for i in 1...25 {
var foo = ""
for j in 1...25 {
foo += i&j >= i^j ? "•" : " "
}
print(foo)
}
•
••
••
••••
••••
••••
••••
••••••••
••••••••
••••••••
••••••••
••••••••
••••••••
••••••••
••••••••
••••••••••
••••••••••
••••••••••
••••••••••
••••••••••
••••••••••
••••••••••
••••••••••
••••••••••
••••••••••
请注意正方形是如何平方增长的。
由此可见,i == j == true
总是返回true。