java中的BitMask操作

Ana*_*and 7 java bitmask

考虑我有这样的值分配的场景

亚马逊-1

沃尔玛-2

目标-4

Costco -8

Bjs -16

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

面膜产品说明

1台笔记本电脑在亚马逊

17款适用于亚马逊和BJ的iPhone

24床垫可用Costco和BJ's

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

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

Dav*_*rek 9

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;
}
Run Code Online (Sandbox Code Playgroud)

if如果床垫值与面具套装具有相同的位,那么该声明将这些位排成一行,然后是销售床垫的面具的商店.当商店出售床垫时,床垫值和面罩值的AND将仅为非零.对于每次迭代,我们将掩码位向左移动一个位置.

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