考虑场景 我有像这样分配的值
Amazon -1
Walmart -2
Target -4
Costco -8
Bjs -16
在数据库中,数据是通过根据每个产品的可用性屏蔽这些值来存储的。 例如,
Mask product description
1 laptop Available in Amazon
17 iPhone Available in Amazon and BJ
24 Mattress Available in Costco and BJ's
像这些一样,所有产品都被屏蔽并存储在数据库中。
如何根据屏蔽值检索所有零售商。, 例如,对于床垫,掩码值为 24。那么我将如何以编程方式查找或列出 Costco & BJ's。任何算法/逻辑将不胜感激。
最佳答案
int mattress = 24;
int mask = 1;
for(int i = 0; i < num_stores; ++i) {
if(mask & mattress != 0) {
System.out.println("Store "+i+" has mattresses!");
}
mask = mask << 1;
}
if
语句排列位,如果床垫值与掩码集有相同的位,则掩码为的商店出售床垫。只有当商店出售床垫时,床垫值和掩码值的 AND 才会为非零。对于每次迭代,我们将掩码位向左移动一个位置。
请注意,掩码值应该是正数,而不是负数,如果需要,您可以乘以负数。
关于java - java中的BitMask操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2353254/