(i-3)&3
什么时候评估为真?
我在这里找到了:
https://github.com/thewizard6296/SPOJ_CODE/blob/c03c5900b6a22389a3acf2ddf3ff76f230bcb358/CZ_PROB1.cpp
答案 0 :(得分:1)
考虑一下" 3"是4位二进制。
0011
对于某些数字x,何时表达式为" x& 3"是(即非零)?当x在其两个最低有效位中的任何一个中具有1时,这是真的。数字何时在其两个最低有效位中的任何一个中都没有1?考虑4的倍数:
4: 8: 12: etc...
0011 0011 0011
& 0100 & 1000 & 1100
---- ---- ----
0000 0000 0000
TL; DR(i - 3)&当(i-3)不是4的倍数时,3评估为真。