java中的BitMask操作

前端之家收集整理的这篇文章主要介绍了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将仅为非零.对于每次迭代,我们将掩码位向左移动一个位置.

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

猜你在找的Java相关文章