假设在某些系统中,用户的状态被分配给权力为2的数字。
1 - New Member
2 - Member
4 - Friend
8 - VIP
16 - Admin
32 - System Owner
因此,如果System Owner
获得Friend
和Admin
状态,则其状态的值为52.现在,我想查询我的状态表并查看用户拥有的内容{{1 }} 状态。如何检查该号码Friend
是数字生成总和(4
)的一部分?
如果由函数完成,则在预期输出之后:
52
我想到的算法是减去最大可能数(2 ^ n),该数字低于(在示例中)isPartOf( 4, 52); //returns true
isPartOf(12, 52); //returns false since 8 (VIP) was not used during calculating 52
。有更有效的方法吗?
答案 0 :(得分:4)
按位AND。
>>> 52 & 4 == 4
True
>>> 52 & 12 == 12
False