java中的BitMask操作

考虑一下场景
我有这样的价值观

Amazon -1

Walmart -2

Target -4

Costco -8

Bjs -16

在DB中,通过根据每个产品的可用性屏蔽这些值来存储数据.
例如.,

Mask product description

1 laptop Available in Amazon

17 iPhone Available in Amazon
and BJ

24 Mattress Available in
Costco and BJ’s

像这样,所有产品都被掩盖并存储在DB中.

如何根据Masked值检索所有零售商.
例如,对于床垫,蒙面值是24.然后我如何找到或列出Costco& BJ以编程方式.任何算法/逻辑都将受到高度赞赏.

解决方法

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将仅为非零.对于每次迭代,我们将掩码位向左移动一个位置.

请注意,掩码值应为正值,而不是负值,如果需要,可以乘以负值.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...